2015-02-05 59 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