我知道即使ViewState被禁用TextBox,我们也不会丢失数据,因为它实现了IPostBackDataHandler
接口。为什么标签的价值改变了?
<asp:TextBox ID="TextBox1" runat="server" EnableViewState="False"/>
但我的问题是为什么这也发生在标签呢?为什么标签不会丢失数据,即使ViewState被禁用,因为标签没有实现IPostBackDataHandler
接口?
<asp:Label ID="Label1" runat="server" EnableViewState="False" ViewStateMode="Disabled"/>
文本框定义:
public class TextBox : WebControl, IPostBackDataHandler,
标签的定义:
public class Label : WebControl, ITextControl
我的代码:
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" EnableViewState="False" ViewStateMode="Disabled" Text="Before click"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" EnableViewState="False"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_OnClick"/>
</div>
</form>
而后面的代码:
protected void Button1_OnClick(object sender, EventArgs e)
{
Label1.Text = "Changed.";
}
点击按钮后,我希望看到标签中的“点击之前”,但点击按钮后,我看到标签中的“已更改”文本。
你叫什么“数据”?文本在标签和文本框上?如果是这样,这个文本如何在标记中设置? – Andrei
@Andrei在按钮上单击我写这TextBox1.Text =“已更改”; Label1.Text =“已更改。”;我希望标签会丢失数据,因为我禁用了viewstate并且它没有实现IPostBackDataHandler。 –
好吧,数据的含义很清楚,但不是“失去”的意思。所以你点击改变文字。现在你期望什么?页面加载和控件具有“更改”以外的值?或者下一次回传发生并且控件具有除“已更改”之外的其他值? – Andrei