首页 > 代码库 > 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。

回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。

回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证

1。问题原因:在pageload 中直接DataBind()的话,当你激发了 GridView的中嵌入控件的事件,这时,就激发了PostBack, 然而你并没有进行判断 这时的数据绑定 仍然是pageLoad 的 DateBind()先执行, 可是这时你激发了 更新,删除等按钮的事件,这时就会产生 上面的“验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件”的错误。

2.解决办法:把绑定语句写在!IsPostBack里,  

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //绑定数据的语句
        }
    }

3.IsPostBack:

  意思是当前请求是否第一次打开。Page.IsPostBack或者IsPostBack或者this.IsPostBack或者this.Page.IsPostBack,它们都等价。
  1)当通过IE的地址栏等方式打开一个URL时是第一次打开, 当通过页面的提交按钮或能引起提交的按钮以POST的方式提交的服务器时,页面就不再是第一次打开了。(每点击一次按钮,都是一次加载)
  2)IsPostBack只有在第一次打开的时候是false,其它时候都是true,
  3).Net判断一个Page是否第一次打开的方法:Request.Form.Count>0
  4)每次页面Load的时候,根据需要把每次都要加载的代码放在IsPostBack中,只需要加载一次的代码放在if(!IsPostBack)中。
  5)每次用户回传服务器任何信息的时候,都会引发isPostBack属性用来判断此用户是否曾经做过登陆或者其他事件
  6 )

  if(!IsPostBack)  //只有第一次打开的时候,才会执行里面的代码
  {
  Response.Write("第一次提交!");
  }
  if(IsPostBack)
  {
  Response.Write("点击按钮!");
  }