取消选中时,ASP.NET CheckBox不会启动CheckedChanged事件
我在ASP.NET内容表单上有一个CheckBox,如下所示:
<asp:CheckBox runat="server" ID="chkTest" AutoPostBack="true" OnCheckedChanged="chkTest_CheckedChanged" /> 在我的代码背后我有以下方法: protected void chkTest_CheckedChanged(object sender,EventArgs e) { } 当我在浏览器中加载页面并单击复选框时,它将被检查,页面发回,我可以看到chkTest_CheckedChanged被调用。 当我再次单击复选框时,它将被取消选中,页面发回,但是没有调用chkTest_CheckedChanged。 该过程是可重复的,所以一旦CheckBox被取消选中,检查它将触发事件。 我在Web.Config中禁用了View State,启用View State会导致此问题消失。在View State仍然被禁用的情况下,我可以做什么可靠的事件触发? 更新: 更新2: 解决方法
实现一个自定义CheckBox存储在ControlState而不是ViewState中的Checked属性可能会解决这个问题,即使复选框有AutoPostBack = false
与ViewState不同,ControlState不能被禁用,可用于存储对控件行为至关重要的数据。 我现在没有视觉工作室环境来测试,但是应该是这样的: public class MyCheckBox : CheckBox { private bool _checked; public override bool Checked { get { return _checked; } set { _checked = value; } } protected override void OnInit(EventArgs e) { base.OnInit(e); //You must tell the page that you use ControlState. Page.RegisterRequiresControlState(this); } protected override object SaveControlState() { //You save the base's control state,and add your property. object obj = base.SaveControlState(); return new Pair (obj,_checked); } protected override void LoadControlState(object state) { if (state != null) { //Take the property back. Pair p = state as Pair; if (p != null) { base.LoadControlState(p.First); _checked = (bool)p.Second; } else { base.LoadControlState(state); } } } } 更多信息here。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – Facebook和G的自定义LINK共享URL
- .net – 为什么HttpContext.Current.Handler为null?
- asp.net – Web.Config可能“不可读”
- asp.net-mvc – 同步ASP.NET MVC回发回调的问题
- asp.net-mvc – NHibernate:我如何XmlSerialize一个ISet?
- asp.net-mvc – 我可以在Ajax.ActionLink中使用OnSuccess事
- asp.net – WebAPI返回XML
- ASP.NET Web Form Project行动平台直立与横放自动缩放比例
- asp.net – 如何将http请求转发到https网址
- asp.net-mvc – 在MVC应用程序中处理Rich Text
- asp.net-mvc – 如何在asp.net mvc中从https跳出
- asp.net-mvc – ASP.NET MVC模型绑定器的问题
- asp.net-mvc – 如何使用Html.DropDownList为默认
- asp.net – FormView无法显示
- asp.net – 引用依赖于ConfigurationManager的.n
- asp.net-mvc – 你如何安装Castle Windsor IOC?
- asp.net-core – 是否可以在ASP.NET Core中使用自
- asp.net-mvc – MVC4 Bootstrap示例中基于角色的
- asp.net-mvc – 什么时候使用ViewData而不是View
- 将QueryString附加到asp.net核心Anchor Helper T