我有一个asp页面,其中控件是从Page_Init()上的DB动态添加的 EnableViewState设置为false。
其中一个动态控件是CheckBox,选中后会导致回发。
现在在Page_Init上我重新填充我的页面(根据规则更改后),复选框的checked属性现在为false。
从我看到的内容到LoadPageStateFromPersistenceMedium()的结尾都是假的。
protected override object LoadPageStateFromPersistenceMedium()
{
Control cntrl = Page.FindControl("FINS10CopyAddress");
Boolean check = ((CheckBox)cntrl).Checked;
return null;
}
然后在OnPreLoad()上突然再次出现。
protected override void OnPreLoad(EventArgs e)
{
Control cntrl = Page.FindControl("FINS10CopyAddress");
Boolean check = ((CheckBox)cntrl).Checked;
}
如果我对另一个控件的可见属性执行相同操作,则可以正常工作。
有什么想法可以导致这个或建议的方法覆盖以不加载以前的状态?
下面的答案帮助我创建了一个解决方法:
dataValue cntrl = ((Helper)Session["helper"]).Event.Control(Request["__EVENTTARGET"]);
if (cntrl != null)
{
if (cntrl is webCheckBox)
((CheckBox)Page.FindControl(Request["__EVENTTARGET"])).Checked = (Boolean)cntrl.Value;
}
答案 0 :(得分:0)
修改强>
设置控件的回发数据,在LoadPageStateFromPersistenceMedium()
中查看:
var val = Request[Request["__EVENTTARGET"]];
不幸的是,Request对象是readonly
我不知道有任何其他方法可以阻止它将值设置为客户端更改为的值,除非在{{1}之后将值设置为LoadPageStateFromPersistenceMedium()
中的值已设置。