当前位置: 首页 > 面试题库 >

错误:无效的回发或回调参数

甄阿苏
2023-03-14
问题内容

我在使用gridview单击按钮时遇到以下错误

 Server Error in '/' Application.
Invalid postback or callback argument.  Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page.  For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.  If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: Invalid postback or callback argument.  Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page.  For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.  If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[ArgumentException: Invalid postback or callback argument.  Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page.  For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.  If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.]
   System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) +144
   System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) +111
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +29
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.17929

当我按下gridview内的按钮时会发生这种情况,奇怪的是,我有另一个gridview,在运行不同代码但没有错误的列中也有自定义按钮。以下是该页面的代码及其背后的代码。

namespace CCCC
{
    public partial class drivermangement : System.Web.UI.MasterPage
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
            {
                if (Roles.IsUserInRole("Administrator"))
                {
                    LoggedInUser.Value = Convert.ToString(Request.QueryString["driver"]);
                }
                else
                {
                    LoggedInUser.Value = Membership.GetUser().UserName.ToString();
                }
                DayOfTheWeekHiddenField.Value = Convert.ToString(Request.QueryString["dow"]);
            }
            else
            {
                Response.Redirect("default.aspx");
            }
            if (NewCustomersGrid.Rows.Count == 0)
            {
                NewCustomersLabel.Visible = false;
            }
            else
            {
                NewCustomersLabel.Visible = true;
            }
            if (NeedCompostGrid.Rows.Count == 0)
            {
                NeedCompostLabel.Visible = false;
            }
            else
            {
                NeedCompostLabel.Visible = true;
            }
            if (CanceledGrid.Rows.Count == 0)
            {
                CanceledLabel.Visible = false;
            }
            else
            {
                CanceledLabel.Visible = true;
            }
            if (VacationGrid.Rows.Count == 0)
            {
                VacationLabel.Visible = false;
            }
            else
            {
                VacationLabel.Visible = true;
            }
            if (NewCustomersGrid0.Rows.Count == 0)
            {
                NewCustomersLabel0.Visible = false;
            }
            else
            {
                NewCustomersLabel0.Visible = true;
            }
            if (NeedCompostGrid0.Rows.Count == 0)
            {
                NeedCompostLabel0.Visible = false;
            }
            else
            {
                NeedCompostLabel0.Visible = true;
            }
            if (CanceledGrid0.Rows.Count == 0)
            {
                CanceledLabel0.Visible = false;
            }
            else
            {
                CanceledLabel0.Visible = true;
            }
        }

        protected void NewCustomerDoneButton_Click(object sender, EventArgs e)
        {
            int CustomerID = Convert.ToInt32(((Button)sender).CommandArgument);
            string CustomerBinNeedAcknowledged = "Yes";
            string strConnString = "Data Source";
            using (SqlConnection con = new SqlConnection(strConnString))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = "UPDATE Customers SET CustomerBinNeedAcknowledged=@CustomerBinNeedAcknowledged WHERE CustomerID=@CustomerID";
                    cmd.Parameters.AddWithValue("@CustomerBinNeedAcknowledged", CustomerBinNeedAcknowledged);
                    cmd.Parameters.AddWithValue("@CustomerId", CustomerID);
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
            } 
       }

和实际页面:

<%@ Master Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" Inherits="CCCCCC.drivermangement" CodeBehind="drivermangement.master.cs" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <asp:HiddenField ID="LoggedInUser" runat="server" />
    <asp:HiddenField ID="DayOfTheWeekHiddenField" runat="server" />
    <ajaxToolkit:TabContainer ID="RoutingTabs" runat="server" ActiveTabIndex="0" 
        Width="900px">
        <ajaxToolkit:TabPanel runat="server" HeaderText="Pre-Route" ID="PreRouteTab">
        <ContentTemplate>
<br />
<asp:Label ID="NewCustomersLabel" runat="server" 
        style="font-weight: 700; font-size: large; color: #009933" Text="New Customers"></asp:Label>

<asp:GridView ID="NewCustomersGrid" runat="server" AllowPaging="True" AutoGenerateColumns="False" BackColor="White" 
        BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" 
        DataKeyNames="CustomerId" DataSourceID="NewCustomers" ForeColor="Black" 
        GridLines="Vertical">
<AlternatingRowStyle BackColor="#99FF99" ></AlternatingRowStyle>
<Columns>
<asp:BoundField DataField="CustomerFullName" HeaderText="Name" 
                SortExpression="CustomerFullName" />
<asp:BoundField DataField="CustomerFullAddress" HeaderText="Address" 
                SortExpression="CustomerFullAddress" />
<asp:BoundField DataField="CustomerNeedsBin" HeaderText="Needs Bin?" 
        SortExpression="CustomerNeedsBin" />
<asp:TemplateField ShowHeader="False"><ItemTemplate>
                <asp:Button ID="NewCustomerDoneButton" runat="server" CommandName="" 
                Text="Done" CommandArgument='<%# Eval("CustomerID") %>' OnClick="NewCustomerDoneButton_Click" CausesValidation="False" />

</ItemTemplate>
</asp:TemplateField>
</Columns>
<asp:SqlDataSource ID="NewCustomers" runat="server" 
        ConnectionString="<%$ ConnectionStrings:tcc_customersConnectionString %>"

                SelectCommand="SELECT [CustomerId], [CustomerStatus], [CustomerFullName], [CompanyName], [CustomerFullAddress], [CustomerPickUpDay], [CustomerPickUpDay2], [CustomerDriver], [CustomerNeedsBin], [CustomerBinNeedAcknowledged] FROM [Customers] WHERE (([CustomerBinNeedAcknowledged] = @CustomerBinNeedAcknowledged) AND ([CustomerNeedsBin] = @CustomerNeedsBin) AND ([CustomerDriver] = @CustomerDriver) AND ([CustomerStatus] = @CustomerStatus) AND ([CustomerPickUpDay] = @CustomerPickUpDay OR [CustomerPickUpDay2] = @CustomerPickUpDay2))"><SelectParameters>
<asp:Parameter DefaultValue="No" Name="CustomerBinNeedAcknowledged" Type="String" />
<asp:Parameter DefaultValue="Yes" Name="CustomerNeedsBin" Type="String" />
<asp:ControlParameter ControlID="LoggedInUser" Name="CustomerDriver" 
            PropertyName="Value" Type="String"></asp:ControlParameter>
<asp:Parameter DefaultValue="New" Name="CustomerStatus" Type="String" />
<asp:ControlParameter ControlID="DayOfTheWeekHiddenField" Name="CustomerPickUpDay" 
                PropertyName="Value" Type="String" ></asp:ControlParameter>
<asp:ControlParameter ControlID="DayOfTheWeekHiddenField" 
            Name="CustomerPickUpDay2" PropertyName="Value" Type="String" />
</SelectParameters>
</asp:SqlDataSource>

</ContentTemplate>

</ajaxToolkit:TabPanel>
        <ajaxToolkit:TabPanel runat="server" HeaderText="Post-Route" ID="PostRouteTab"><ContentTemplate>

现在我想知道,这是否有什么关系的事实,GridView是内部的Ajax Tab Container?因为我的其他工作正常的表不是…

注意:由于字符限制,不得不从页面上剪切一些代码


问题答案:

1)GridView中无效的Postback或Callback参数问题可能是:您正在使用对象数据源或通过函数调用的手动绑定在Page_Load事件中绑定数据。这将使您的GridView在任何控件的每个事件触发时都绑定数据。

当您使用OnRowCommand触发任何GridView命令时,在RowCommand触发之前,您的GridView将重新绑定,并且其中的所有控件都将分配给新的ID。因此,RowCommand无法获取触发事件的项目。

GridView中无效的Postback或Callback参数的解决方案:您可以在此条件下将数据绑定

if (!IsPostBack)
{
    //Your code for Bind data 
}

如果无法正常运行,此代码肯定会为您提供解决方案,然后检查是否有其他控件没有出错。



 类似资料:
  • 问题内容: 我收到此错误: 这是什么意思? 这是我的代码: 我究竟做错了什么? 按提交按钮后出现此错误。 问题答案: 在您的aspx文件中,您应该这样放置第一行: 如果您已经有类似的东西, 那么只需添加其余的=> 我建议不要这样做。

  • 我试图使用回调将验证输入。 当我试图在文本框中输入时,我遇到了下面的错误。有人能帮我解释一下为什么我会犯这个错误,以及我如何纠正它吗。 不允许回调吗?我错过了什么? 未捕获错误:对象作为React子对象无效(找到:具有键{dispatchConfig、_TargetList、nativeEvent、type、target、currentTarget、eventPhase、bubbles、cance

  • 我在研究JNI的回电 null

  • 问题内容: 我在这里需要一些建议或一些解释。我有一个jquery ajax调用, 一切正常。我的回调响应正确触发。但是,我注意到的是,即使我的呼叫返回成功状态200,每次也会触发我的回调。在上面的回调中,我看到该对象是200。 谁能解释什么地方出了问题或这里发生了什么?回调应该仅在我有404或非200响应时触发。我的假设正确吗? 谢谢。 问题答案: 错误回调将在http错误时调用,但 如果响应上的

  • 参数回调方式与调用本地 callback 或 listener 相同,只需要在 Spring 的配置文件中声明哪个参数是 callback 类型即可。Dubbo 将基于长连接生成反向代理,这样就可以从服务器端调用客户端逻辑 1。可以参考 dubbo 项目中的示例代码。 服务接口示例 CallbackService.java package com.callback; public interfa

  • 问题内容: 我有以下网络服务; 这是库存标准,不更改类装饰器。 我有这个jQuery方法; 这是一个发布操作,因为稍后我需要向其发布数据。 当我执行jQuery时,返回“ No transport”错误。 我还应该提到的一件事是,jQuery存储在我的计算机上的简单HTML文件中,并且WebService也正在我的计算机上运行。 HTML页面上没有代码,它只是一个网页,而不是ac#项目或其他任何代