2015-02-05 61 views
0

我有一個帶有兩個asp文本框和兩個輸入元素的aspx.net頁面。ASP文本框保留數據,清除輸入元素

<asp:TextBox class="input1" ID="TextBoxAirportPkup" placeholder="Enter Flight Number" runat="server"></asp:TextBox>... 
<asp:TextBox class="input1 " ID="TextBoxAirportName" placeholder="Airport" runat="server" />... 
<input id="airPickupdateInput" class="timepicker datepicker" placeholder="Pickup Date" type="text" /> 
<input type="text" id="airPickuptimeInput" class="timepicker" placeholder="Pickup Time" /> 

當我點擊無關的按鈕和運行一些代碼後,在TextBox元素的文本被保留,但在輸入元素的文本被清除。 Page_Load是用IsPostback == true來調用的,但在這種情況下我不運行代碼。爲什麼會發生這種情況,我該如何預防它?

回答

1

添加runat =「server」,服務器端可以看到輸入元素。

+0

ASP.NET視圖狀態概述https://msdn.microsoft.com/en-us/library/bb386448(v=vs.140).aspx – bdimag 2015-02-05 19:36:01

0

兩個TextBox保持其狀態,由於這一事實,他們是服務器控件,因此,他們可以訪問的網頁視圖,其目的是在回髮狀態持續狀態。

兩個輸入控件是HTML控件,它們不具有訪問以查看狀態,因此回傳(這是在像刷新頁面效應)後不重新填充。

爲了在回發之後保留這些輸入的狀態,您需要讓它們成爲服務器控件,或者使用隱藏域控件並使用javascript將隱藏控件的值寫回輸入,如果它們不能作爲服務器控制任何原因。

也可以使用Ajax提交其他動作或形式,而不會導致整個頁面的回發,因此nigate需要刷新所有數據的頁面上。這將需要對您的應用程序進行一些重組。

對視圖狀態的更多信息,請參閱https://msdn.microsoft.com/en-us/library/ms972976.aspx#viewstate_topic3