asp.net textarea postback преди бутон за изпращане

Имам 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 и след това променя фокуса към друга контрола, 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 от страна на сървъра). Ако заявката съдържа стойността, въведена в текстовото поле, тогава нещо се случва от страна на сървъра, но добрата новина е, че винаги можете да извлечете стойността от обекта на заявката. Ако стойността не присъства в обекта Request, това означава, че кодът от страна на клиента изчиства стойността преди изпращането.

person VinayC    schedule 17.08.2011

Ако метод onclick върне false, той отменя действието, което бутонът нормално би изпълнил. Тъй като вашият бутон обикновено изпраща вашия формуляр, но изглежда, че не се изпраща, вашият клиентски javascript код в doStuff вероятно връща false.

person James Harris    schedule 17.08.2011
comment
Това не е така; връща true. Той изпълнява правилно както събитията от страна на клиента, така и от страна на сървъра. - person Harper; 17.08.2011