我试图在我的产品页面上添加“删除”按钮,但是我经常遇到以下错误:

错误:


  无效的回发或回调参数。事件验证已启用
  在配置中使用或  页面中的页面EnableEventValidation =“ true”%>。为了安全
  目的,此功能可验证回传或回调的参数
  事件源自最初呈现的服务器控件
  他们。如果数据有效且预期,请使用
  ClientScriptManager.RegisterForEventValidation方法以
  注册回发或回调数据以进行验证。
  
  堆栈跟踪:
  
  [ArgumentException:无效的回发或回调参数。事件
  使用中启用验证
  配置或页面中的。
  为了安全起见,此功能会验证
  回发或回调事件源自服务器控件,该控件
  最初渲染它们。如果数据有效且预期,请使用
  ClientScriptManager.RegisterForEventValidation方法以
  注册回发或回调数据以进行验证。]
  System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId,
  字符串参数)+8730646
  System.Web.UI.Control.ValidateEvent(String uniqueID,String
  eventArgument)+113
  System.Web.UI.WebControls.Button.RaisePostBackEvent(String
  eventArgument)+35
  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)
  +36 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
  +5563


我尝试过的

在整个研究过程中,我了解到可以使用enableEventValidation="false"validateRequest="false",但由于安全原因,不建议使用。
我试图将两者都设置为False,它解决了这个问题(我没有插入DELETE查询),但是我为关闭一个安全性设置而感到不舒服,只是为了摆脱一个错误。

我的中继器位于Page_Load内部,并且由于我使用的是母版页,因此中继器也是一种形式。

Aspx:

<asp:Repeater runat="server" ID="RepProductMenu" OnItemCommand="RepProducts_ItemCommand">
<ItemTemplate>
         [Lots of stuff]......

        <asp:Button ID="BtnDelete" runat="server" Text="Delete" CommandName="Delete" CommandArguement='<%# Eval("ID") %>' /

</ItemTemplate>
</asp:Repeater>


Aspx.cs:

protected void RepProducts_ItemCommand(Object Sender, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "Delete")
    {
        int ID = Int32.Parse(e.CommandArgument.ToString());
        // Add Delete Query
        Response.Write("COMMAND");
    }
}


任何建议和想法,我们感激不尽。

最佳答案

避免将Delete用作CommandName,因为我认为这是保留的。

此外,您的Button控件中还有一个错字。 CommandArguement应该是CommandArgument



如果您的中继器绑定在Page_Load而不是if !(page.IsPostBack)内,则单击Delete按钮时它将反弹。这可能会导致问题,因为中继器将在运行ItemCommand之前反弹。这将使其无效。

尝试更改您的代码,以使if !(page.IsPostBack)包裹在绑定中。

10-05 20:17
查看更多