2016-09-27 9 views
1

Я создаю систему примечаний/комментариев для проекта на работе. В настоящее время нажатие «нового» или «ответа» (обе ссылки, но я могу легко изменить их на кнопки) вызывает загрузочный модальный код, в котором пользователь может ввести свой комментарий/ответ. Мне нужно установить, является ли комментарий новым, или ответом кому-то другому, что я хотел бы сделать, установив int, соответствующий идентификатору комментария, на который отвечает (0 для нового комментария).Переменные/заданные переменные для модального всплывающего окна

Похоже, что я должен использовать событие OnClick для установки нужной мне переменной, но указанное событие не срабатывает при открытии модального.

Modal:

<div class="modal" id="myModal" role="dialog"> 
    <div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header">Add a comment</div> 
     <div class="modal-body"> 
     <label><small>Author: </small><%:this.Author %></label><br /> 
     <label><small>Date: </small>Date</label> 
     <asp:TextBox ID="text_M_NOTE" runat="server" TextMode="MultiLine" Height="10em" /> 
     </div> 
     <div class="modal-footer"> 
     <asp:button runat="server" class="NotePopupButton" onclick="Post_Click" Text="Save" /> 
     <asp:button runat="server" class="NotePopupButton" data-dismiss="modal" Text="Cancel" /> 
     </div> 
    </div> 
    </div> 
</div> 

Для запуска модальность, я попытался с помощью жерех LinkButton;

<asp:LinkButton data-toggle='modal' data-target='#myModal' runat="server" OnClick="New_Click">New comment...</asp:LinkButton> 

Regular hyperlink;

<a href="#" data-toggle='modal' data-target='#myModal' runat="server" 

гиперссылок с onserverlick вместо OnClick ...

<a href="#" data-toggle='modal' data-target='#myModal' runat="server" onserverclick ="New_Click">New comment...</a> 

Ничто еще не работал. Код позади просто

protected void New_Click(object sender, EventArgs e) 
{ 
    NoteParent = "0"; // 0 Indicates a new comment 
} 

и/или

protected void Reply_Click(object sender, EventArgs e) 
{ 
    NoteParent = "12"; // Indicates a reply to comment #12 
} 

Я должен отметить, что модальный открывает и сохраняет свой комментарий просто отлично, он просто не будет включать в себя переменную NoteParent; он отображается как null.

Я предполагаю, что независимо от того, какой волшебный Bootstrap делает за кулисами, он поглощает событие до того, как мой код позаботится об этом. Как вы обходите это?

+0

Где определен 'NoteParent'? – KSib

+0

onserverlick должен быть onserverclick. И разве вы не должны обрабатывать новый/ответ в Post_Click, а не New_Click? – smoore4

+0

@KSib 'NoteParent' определяется в верхней части класса страницы. На самом деле это не нужно. Я могу установить скрытое текстовое поле, а затем оттуда оттуда, когда я сохраню заметку. –

ответ

0

Вам не нужно делать вызовы серверов, если вам нужно установить переменную перед открытием модального кода, просто удалите атрибут data-toggle и создайте функцию JavaScript для обработки щелчка кнопки, внутри функции проверьте, является ли это новый комментарий или ответ, задав переменную JavaScript или значение скрытого поля, а затем показать модальный диалог прагматично

+0

Нашел решение в гибриде между этим и моим странным отвращением к JavaScript; удалили атрибуты data-toggle и 'data-target' из ссылки, затем изменили onClick, чтобы включить' ScriptManager.RegisterStartupScript (this, this.GetType(), "mShow", "$ ('# myModal'). modal ('show'); ", true). Однако любопытно, что просто установка varibale (определенного в классе) не сработала. Использование переменной сеанса или глобальным классом. –

+0

Кажется, что использование скрытого поля вместо переменной также работает. Странный. Независимо от того, спасибо за помощь. –

Смежные вопросы