Обратная передача текстовой области asp.net перед кнопкой отправки

У меня есть форма ASP.NET с несколькими элементами управления и кнопкой отправки внизу, все внутри панели обновления:

<asp:UpdatePanel runat="server" ID="upContent">
    <ContentTemplate>
        <asp:TextBox runat="server" ID="tbxMyTextBox" AutoPostBack="true" />
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="return doStuff()" OnClick="btnSubmit_Click" />
    </ContentTemplate>
</asp:UpdatePanel>

Если я пишу что-то в TextBox и сразу же нажимаю «отправить» (без предварительного нажатия на TextBox), изменения не записываются (как видно в обработчике событий на стороне сервера). Однако, если я пишу что-то в TextBox, а затем переключаю фокус на другой элемент управления, AutoPostback происходит через UpdatePanel, а затем нажатие «отправить» распознает эти изменения. Как я могу заставить этот контент обновляться сразу же, как я нажимаю кнопку отправки, при этом продолжая выполнять связанные с ним как клиентские, так и серверные события? Спасибо!


person Harper    schedule 17.08.2011    source источник
comment
Почему вы установили AutoPostBack=true? Есть ли в этом необходимость?   -  person Muhammad Akhtar    schedule 17.08.2011
comment
Проблема, которую я описываю в своем вопросе, возникает независимо от настройки AutoPostBack.   -  person Harper    schedule 17.08.2011
comment
Вы говорите, что автопостбэк что-то делает с текстовым полем, что нужно сделать перед отправкой формы?   -  person patmortech    schedule 17.08.2011


Ответы (2)


Возможно ли, что ваше текстовое поле очищается из-за какого-либо обработчика событий при отправке/при нажатии? Я предлагаю вам использовать какой-нибудь инструмент, такой как Fiddler, для проверки данных POST в запросе. Или вы можете поставить точку останова в коде на стороне сервера и проверить данные запроса. Ищите, в частности, Request.Form[tbxMyTextBox.UniqueID] - т.е. ищите наличие значения для имени вашего текстового поля (свойство имени на стороне клиента, которое соответствует свойству UniqueID на стороне сервера). Если запрос содержит значение, введенное в текстовое поле, значит, что-то происходит на стороне сервера, но хорошая новость заключается в том, что вы всегда можете получить значение из объекта запроса. Если значение отсутствует в объекте запроса, это означает, что код на стороне клиента очищает значение перед отправкой.

person VinayC    schedule 17.08.2011

Если метод onclick возвращает false, он отменяет действие, которое кнопка обычно выполняет. Поскольку ваша кнопка обычно отправляет вашу форму, но, похоже, она не отправляется, ваш код javascript на стороне клиента в doStuff, вероятно, возвращает false.

person James Harris    schedule 17.08.2011
comment
Это не тот случай; он возвращает истину. Он правильно запускает как клиентские, так и серверные события. - person Harper; 17.08.2011