我有一个带有两个asp文本框和两个输入元素的aspx.net页面。
<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元素中的文本将被保留,但输入元素中的文本将被清除。使用IsPostback == true调用Page_Load,但在这种情况下我没有运行代码。为什么会发生这种情况,我该如何预防呢?
答案 0 :(得分:1)
添加runat =“server”,服务器端可以看到输入元素。
答案 1 :(得分:0)
两个Textbox由于它们是服务器控件而保留其状态,因此它们可以访问页面视图状态,该状态旨在在回发之间保持状态。
两个输入控件是html控件,它们无法访问视图状态,因此在回发后不会重新填充(实际上就像刷新页面一样)。
为了在回发后保留这些输入的状态,您需要使它们成为服务器控件,或者使用hiddenfield控件并使用javascript将隐藏控件中的值写回输入(如果它们不能是服务器控件)无论出于何种原因。
也可以使用Ajax提交其他操作或表单,而不会导致整个页面的回发,因此需要刷新页面上的所有数据。这将需要对您的申请进行一些重组。
有关查看状态的详情,请参阅https://msdn.microsoft.com/en-us/library/ms972976.aspx#viewstate_topic3