我的是一个GridView,在程序中叫gv_User,我有一个按钮,当我点击该按钮的时候就删除数据库中的该条记录。但是当我点删除的时候,就出现了异常。异常信息:“/Forum”应用程序中的服务器错误。
--------------------------------------------------------------------------------回发或回调参数无效。在配置中使用 <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) +406
   System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) +108
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +32
   System.Web.UI.WebControls.Button.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) +33
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4921 代码如下:    protected void gv_User_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Del")
        {
            int iIndex = Convert.ToInt16(e.CommandArgument);
            string sUserID = gv_User.DataKeys[iIndex].Value.ToString();
            string sConnectionString = @"server=(local)\SQLEXPRESS;database=Form;Trusted_Connection=True";
            string sSql = "Delete from tbUser where UserID = @UserID";
            using (SqlConnection conn = new SqlConnection(sConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand(sSql, conn))
                {
                    cmd.Parameters.AddWithValue("@UserID", sUserID);
                    ClientScript.RegisterStartupScript(Page.GetType(),"",string.Format("<script>alert('删除了{0}条记录');</script>",cmd.ExecuteNonQuery()));
                    SetBind();
                }
            }
        }
   } private void SetBind()
    {
        DataSet ds = new DataSet();
        string sConnectionString = @"server=(local)SQLEXPRESS;database=Form;Trusted_Connection=True";
        using (SqlConnection conn = new SqlConnection(sConnectionString))
        {
            SqlDataAdapter da = new SqlDataAdapter("select * from tbUser",conn);
            da.Fill(ds);
        }
        gv_User.DataSource = ds;
        gv_User.DataBind();
    }

解决方案 »

  1.   

    在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。
    提示已经很清楚了...
      

  2.   

    在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。
    提示已经很清楚了...
      

  3.   

    在web。config中修改<pages enableEventValidation="false"/>
      

  4.   

    我就是这么按照他这里设置的 可是还出那个异常<%@ Page EnableEventValidation="true" Language="C#" AutoEventWireup="true"  CodeFile="ManageUser.aspx.cs" Inherits="Admin_ManageUser" %>
      

  5.   

    建议不要这么做:pages enableEventValidation="false"
    明显地治标不治本,引鸠止渴
      

  6.   

    额~~我的话是在你page_load中加入
    if not  IsPostBack then  
        绑定的gridview
     end if 就可以了 ~~~不知道你的行吗?试试吧~~~
      

  7.   


     protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GvUser();
            }
        }    public void GvUser()
        {
            DataSet ds = new DataSet();
            string sConnectionString = @"server=(local)\SQLEXPRESS;database=Form;Trusted_Connection=True";
            using(SqlConnection conn = new SqlConnection(sConnectionString))
            {
                SqlDataAdapter da = new SqlDataAdapter("select * from tbUser",conn);
                da.Fill(ds);
            }
            gv_User.DataSource=ds;
            gv_User.DataBind();
        }绑定了,数据删除了,可是还报异常
    下面是异常信息:“/Forum”应用程序中的服务器错误。
    --------------------------------------------------------------------------------在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)源错误: 
    行 108:        {
    行 109:            SqlDataAdapter da = new SqlDataAdapter("select * from tbUser",conn);
    行 110:            da.Fill(ds);
    行 111:        }
    行 112:        gv_User.DataSource = ds;
     源文件: e:\Projects\Forum\Admin\ManageUser.aspx.cs    行: 110 
      

  8.   

    这个问题的话~~~可能要你自己调试哦~~试试网上搜到的方式看了下可能是你那个连接string sConnectionString = @"server=(local)\SQLEXPRESS;database=Form;Trusted_Connection=True";
    是不是有问题~~不好意思c#只能大概看懂而已~~~不过有一点哦~~~个人习惯啦~~我会把连接数据库的内容放在web.config内,不过跟本题无关,只是说下我的方式~~~