0

我有下一个代码,

<form id="form1" runat="server">
<asp:Label runat="server" ID="Label1" EnableViewState="false" />
<asp:CheckBox runat="server" ID="Check1" EnableViewState="false" Checked="false" />
<asp:Button runat="server" ID="Button1" Text="Button1" />
</form>

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack) return;

    Label1.Text = "Label value";
    Check1.Checked = true;
}

为什么回发文本令人绝望,但复选框仍处于选中状态?谢谢

4

2 回答 2

2

引用这篇 MSDN 文章中的参考资料 - Scott Mitchell文档的了解 ASP.NET 视图状态:

页面生命周期阶段 3 - 加载回发数据

开发人员普遍存在一种误解,即视图状态以某种方式负责让 TextBox、CheckBox、DropDownList 和其他 Web 控件在回发过程中记住它们的值。情况并非如此,因为这些值是通过回发的表单字段值标识的,并在 LoadPostData() 方法中为那些实现 IPostBackDataHandler 的控件分配。

于 2012-06-09T08:54:22.797 回答
1

因为复选框从表单数据中获取状态,所以它在重新创建时保持选中状态。

视图状态只需要记住复选框之前的状态,以便服务器端Change事件起作用。

于 2012-06-09T08:45:09.320 回答