smhy8187

 

EnableEventValidation属性

EnableEventValidation属性指示是否应执行事件验证,此属性在.NET Framework 2.0版中是新增的。 
基本控件将检查此属性,以确定是否应对事件进行验证。派生的控件不会继承此基本控件属性,因此默认情况下不进行事件验证。通过向派生的控件本身添加  EnableEventValidation  属性并将其设置为  true,用户仍可以指示  ASP.NET  对派生的控件执行事件验证。   

注意: 
此事件验证机制可消除未经授权的回发请求和回调带来的风险。它指示  ASP.NET  仅对会在回发请求或回调期间在控件上引发的特定事件进行验证。通过此模型,控件可在呈现期间注册其事件,然后在回发或回调期间验证这些事件。默认情况下,现在  ASP.NET  中的所有事件驱动控件均使用此功能:   
如果没有定义EnableEventValidation属性,则只有在显式调用ValidateEvent  时,自定义控件才会参与事件验证。如果处理了事件注册和验证,然后调用ValidateEvent,则不需要在控件上定义此属性。 
如果定义了此属性,但没有注册事件验证,则会出现运行时异常“无效的回发或回调数”。
关于PagesSection.EnableEventValidation 属性的详细解释,请参考下述文章:   
http://msdn2.microsoft.com/zh-cn/library/system.web.configuration.pagessection.enableeventvalidation.aspx

如果设置<pages enableEventValidation="true"/> 或在页面中使用<%@ Page EnableEventValidation="true" %>启用了事件验证,您可以考虑使用ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证,具体的请参考下述代码:
protected override void Render(System.Web.UI.HtmlTextWriter
writer)
{
base.Render(writer);
Page.ClientScript.RegisterForEventValidation(Repeater.ID);
}

关于ClientScriptManager.RegisterForEventValidation 方法详细信息,请参考下述文档:
http://msdn2.microsoft.com/zh-cn/library/ms223397(VS.80).aspx

希望上述解释能够给您一些帮助。

Jasson Wang
在线技术支持工程师
微软全球技术支持中心

posted on 2008-12-21 22:05  new2008  阅读(1981)  评论(1编辑  收藏  举报

导航