当前位置: 代码迷 >> ASP.NET >> ASP.NET2.0中使用用户控件有关问题!
  详细解决方案

ASP.NET2.0中使用用户控件有关问题!

热度:8942   发布时间:2013-02-25 00:00:00.0
ASP.NET2.0中使用用户控件问题求救!!
我在页面中使用了一个用户控件,一个linkButton,一个Button,一个Label代码如下
text.aspx
//引用用户控件
<%@ Register TagPrefix="uc" TagName="header" Src="UserControl/header.ascx" %>
//使用控件
<uc:header id="header" runat="server" />

test.cs
 protected void LinkButton1_Click(object sender, EventArgs e)
  {
  Label1.Text = "1";
  }
  protected void Button1_Click(object sender, EventArgs e)
  {
  Label1.Text = "2";
  }
测试的时候发现当不插入用户控件时,点击Button和LinkButton则改变Label.text属性,一切正常。
但是当引入用户控件后,点击Button没有任何反应,页面没有刷新,Label没有任何响应,点击LinkButton后,页面出现错误,提示如下:请问是什么原因呢?

回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

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

源错误: 

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  

堆栈跟踪: 


[ArgumentException: 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。]
  System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) +2080137
  System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) +106
  System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +32
  System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +174
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102


------解决方案--------------------------------------------------------
没有遇到过...
友情帮顶...
建议检查webconfig文件中有没有 <pages enableEventValidation="true"/>
test.aspx第一行的PAGE定义中有没有 EnableEventValidation="true"
去掉试试...
------解决方案--------------------------------------------------------
怀疑你的用户控件中使用了验证。可以设置button 和LinkButton的验证为False。 CausesValidation="false";
------解决方案--------------------------------------------------------
[ArgumentException: 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。] 
-------------------------------------------------------------------------------------
对上述提示的错误,LZ可直接在百度或google中按错误内容搜索,
有解答
------解决方案--------------------------------------------------------
用户控件中别有form,body,html这样的标记
------解决方案--------------------------------------------------------
加上 enableEventValidation="fales"就ok了
  相关解决方案