<asp:ListView/> onitemcommand 事件调用错误

在绑定数据后添加了删除按钮

<asp:Button ID="btnDelete" CommandName="DeleteShoppingCar" CommandArgument='<%# Eval("SC_ShoppingCarNO") %>' runat="server" Text="【删除】" CssClass="input-button-2 float_left"  style="margin-right: 5px;" />

可是在点击后会报错

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

随后排查发现对此控件进行了重新绑定

        protected void Page_Load(object sender, EventArgs e)
        {
            Data_Bind();
        }

修改为

        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                Data_Bind();
            }      
        }

才ok.onitemcommand 修改如下:

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void lstVShowShoppingCar_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
            if (e.CommandName == "DeleteShoppingCar")//删除购物车
            {
                string shoppingNum = e.CommandArgument.ToString();
                string r_result=null;
                new Shopping_CarHelper().DeleteShopping_CartByShoppingCarNO(shoppingNum, out r_result);
                Data_Bind();
                Alert(r_result);
            }
        }
原文地址:https://www.cnblogs.com/PLifeCopyDown/p/2920336.html