如果启用了事件验证,则抛出无效的回发或回调参数异常

时间:2015-01-12 01:46:51

标签: asp.net

在同一个aspx页面中,此gridview列可以工作:

       <asp:CommandField ShowSelectButton="True" 
            itemstyle-cssclass ="SesnGV_SelectButton" ButtonType="Button">

但是当我使用设计器并将其转换为模板字段时,产生了这个:

        <asp:TemplateField ShowHeader="False">
            <ItemTemplate>
                <asp:Button ID="SesnGV_SelectButton" runat="server" 
                    CausesValidation="False" 
                    CommandName="Select" Text="Select" />
            </ItemTemplate>
            <ItemStyle CssClass="SesnGV_SelectButton" />
        </asp:TemplateField>

它给出错误:

Invalid postback or callback argument.  
Event validation is enabled using <pages enableEventValidation="true"/> 
in configuration or <%@ Page EnableEventValidation="true" %> in a page. 

我在另一个页面中有一个非常相似的控件,没有关于启用事件验证的注释,它工作正常。

有关为什么这可能会作为模板字段失败但是作为直接命令字段工作的任何建议?

1 个答案:

答案 0 :(得分:0)

默认情况下, EnableEventValidation 为true,因此您无需明确设置。因此,您可以安全地将其删除。

此外,如果您将数据绑定到 Page_Load 事件中的 GridView ,则需要在绑定前检查 IsPostBack

否则, GridView再次重新绑定,将创建具有不同ID的Button控件。它会导致Invalid postback or callback argument错误。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        GridView1.DataSource = ...;
        GridView1.DataBind();
    }
}