当我从客户端返回一个页面时,我得到以下错误。我有JavaScript代码,修改asp:ListBox在客户端。

我们如何解决这个问题?

错误详情如下:

Server Error in '/XXX' 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) +2132728
   System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) +108
   System.Web.UI.WebControls.ListBox.LoadPostData(String postDataKey, NameValueCollection postCollection) +274
   System.Web.UI.WebControls.ListBox.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) +11
   System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +353
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1194

--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.1433; ASP.NET Version:2.0.50727.1433

当前回答

这个问题的一个简单解决方案是在页面加载时使用IsPostBack检查。这样问题就解决了。

其他回答

当我在ItemDataBound上添加id时,它没有给我错误,但它没有给我命令名。它返回命令名为空。然后我添加了命令名以及ItemDataBound。然后它解决了同样的问题。谢谢Nilesh,好建议。它起作用了:)

(1) EnableEventValidation = " false "...................这对我没用。

(2) ClientScript.RegisterForEventValidation……这对我没用。

解决方案1:

在GridView中将Button/ImageButton更改为LinkButton。它的工作原理。(但我喜欢ImageButton)

研究:Button/ImageButton和LinkButton使用不同的回发方法

原文:

http://geekswithblogs.net/mahesh/archive/2006/06/27/83264.aspx

解决方案2:

在OnInit()中,输入如下代码来设置Button/ImageButton的唯一ID:

protected override void OnInit(EventArgs e) {
  foreach (GridViewRow grdRw in gvEvent.Rows) {

  Button deleteButton = (Button)grdRw.Cells[2].Controls[1];

  deleteButton.ID = "btnDelete_" + grdRw.RowIndex.ToString();           
  }
}

原文:

http://www.c-sharpcorner.com/Forums/Thread/35301/

四分钟前我收到了同样的错误。然后我像你一样研究了半个小时。在所有论坛中,他们通常会说“添加页面enableEvent..”=假或真”。任何提出的解决方案都不能解决我的问题,直到我找到它。不幸的是,问题出在ASP。净按钮。我两秒钟前把它取下来了。我尝试用“imagebutton”替换,但这也是不可接受的(因为它给出了相同的错误)。

最后我已经替换为LinkButton。它似乎起作用了!

如果你把UseSubmitBehavior="True"改成UseSubmitBehavior="False",你的问题就解决了

<asp:Button ID="BtnDis" runat="server" CommandName="BtnDis" CommandArgument='<%#Eval("Id")%>' Text="Discription" CausesValidation="True" UseSubmitBehavior="False" />

最好的选择是使用隐藏字段,不禁用事件验证,也改变每个列表框,下拉列表选择与runat服务器属性