如果启用了事件验证,则会抛出无效的回发或回调参数异常
Invalid postback or callback argument exception is thrown if Event validation is enabled
在同一个 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.
我在另一个页面中有一个非常相似的控件,没有关于启用事件验证的符号,但它工作正常。
关于为什么这可能作为模板字段失败,但作为直接命令字段工作的任何建议?
默认情况下,EnableEventValidation为真,因此您无需显式设置。因此,您可以安全地移除它。
此外,如果在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();
}
}
在同一个 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.
我在另一个页面中有一个非常相似的控件,没有关于启用事件验证的符号,但它工作正常。
关于为什么这可能作为模板字段失败,但作为直接命令字段工作的任何建议?
默认情况下,EnableEventValidation为真,因此您无需显式设置。因此,您可以安全地移除它。
此外,如果在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();
}
}