我有下一个代码,
<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;
}
为什么回发文字绝望但仍然选中了复选框? 感谢
答案 0 :(得分:1)
因为复选框从表单数据中选取状态,所以在重新创建时它会保持检查状态。
只需要记住该复选框之前的状态,以便服务器端Change
事件有效。
答案 1 :(得分:1)
引用此MSDN文章的参考文献 - Understanding ASP.NET View State by Scott Mitchell doc:
页面生命周期第3阶段 - 加载回发数据
查看状态的开发人员中常见的误解 以某种方式负责TextBox,CheckBoxes,DropDownLists, 和其他Web控件在回发时记住它们的值。这是 不是这样,因为价值是通过回发表单字段标识的 值,并在LoadPostData()方法中为这些控件分配 实现IPostBackDataHandler。