Asp.net 如果启用了事件验证,则引发无效回发或回调参数异常
在同一个aspx页面中,此gridview列工作:Asp.net 如果启用了事件验证,则引发无效回发或回调参数异常,asp.net,Asp.net,在同一个aspx页面中,此gridview列工作: <asp:CommandField ShowSelectButton="True" itemstyle-cssclass ="SesnGV_SelectButton" ButtonType="Button"> 但是,当我使用设计器并将其转换为模板字段时,会导致: <asp:TemplateField ShowHeader="False">
<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.
回发或回调参数无效。
使用启用事件验证
在配置或页面中。
在另一个页面中,我有一个非常类似的控件,没有关于启用事件验证的符号,并且它工作得很好
关于为什么这可能作为模板字段失败,但作为直接命令字段工作,有什么建议吗?默认情况下,是真的,因此您不需要显式设置它。因此,您可以安全地将其移除
此外,如果您将数据绑定到GridView内页面加载事件,则需要在绑定前检查IsPostBack
否则,GridView将重新绑定,并将创建具有不同ID的按钮控件。它导致回发或回调参数无效
错误
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.DataSource = ...;
GridView1.DataBind();
}
}
这解决了问题。谢谢隐马尔可夫模型。。“将创建具有不同ID的按钮控件”。这可能意味着,在整个gridview创建/发送/返回/接收/解释周期的某个地方,创建的模板按钮没有被识别为返回的模板按钮。。。?更多的黑匣子asp.net行为,我想,然而,我想这就是automagic的价格。再次谢谢。是的,你说得对。Net是基于事件模型的;回发时控件的ID必须与原始ID相同。您可能想看看ASP.NETMVC,它比ASP.NETWeb表单灵活得多。