我在中继器内部有两个按钮,我试图从后面的代码访问它们,但它们不起作用。我收到以下错误:
无效的回发或回调参数。事件验证在页面中使用配置或 <%@ Page EnableEventValidation="true" %> 启用。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
我不明白错误是什么意思,也不明白错误来自哪里。这是我的代码:
<asp:Repeater ID="Repeater1" runat="server"
onitemdatabound="Repeater1_ItemDataBound1"
onitemcommand="Repeater1_ItemCommand" >
<ItemTemplate>
<table>
<tr>
<td><asp:Image ID="Image1" runat="server" /></td>
<td><asp:Label ID="empnamelbl" runat="server" Text='<%# Eval("fullname") %>'></asp:Label></td>
<td><asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList></td>
<td> <asp:Button ID="Button1" runat="server" Text="Present" CommandName="test1" CommandArgument='<%# Eval("ID") %>' /> </td>
<td><asp:Button ID="Button2" runat="server" Text="Absent" CommandName="test2" CommandArgument='<%# Eval("ID") %>' /> </td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
后面的代码:
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "test1")
{
Response.Write("hi");
}
}
Run Code Online (Sandbox Code Playgroud) 我已经遇到过一些解释,包括stackoverflow,但不幸的是,我仍然无法完全理解它的原因是什么.
那么,有人可以用简单的方式解释一下吗?
这是一个类似于我问的问题,但我不明白是什么原因.它解决了我的问题,但我只想知道原因.
谢谢