我正在使用asp.net,我有一个中继器。我想从中继器显示的其中一个项目中获取响应。下面是我的代码:
<asp:Repeater ID="Repeatercart" runat="server" OnItemCommand ="RepeaterDeleteitemcommand" >
<ItemTemplate>
<table>
<tr>
<td><img id="Image1" src="PerfumeImages/<%#Eval("ProductImage") %>" width="90" /></td>
</tr>
<tr>
<td><%#Eval("ProductName") %> x<%#Eval("Quantity") %></td>
</tr>
<tr>
<td> <%#Eval("ProductGender") %></td>
</tr>
<tr>
<td> <%#Eval("ProductSize") %> ml</td>
</tr>
<tr>
<td><a class="buy-btn"><asp:Button ID="Button1" CommandName="Click" Text="Remove from cart" runat="server" CommandArgument='<%# Eval("ProductId") %>' /></a></td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
这是我的codebehind:
protected void RepeaterDeleteitemcommand(object source, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{
case "Click":
Label1.Text = "ok !";
break;
}
}
当我运行这段代码时,我得到一个错误:无效的回发或回调参数。事件验证在配置中启用或在页面中使用<%@ Page EnableEventValidation="true" %>。出于安全目的,此功能验证回发或回调事件的参数是否来自最初呈现它们的服务器控件。如果数据是有效且预期的,则使用ClientScriptManager。RegisterForEventValidation方法,以便注册回发或回调数据以进行验证。谢谢你的帮助
我解决了这个问题,想写在这里,所以我可以帮助任何人有同样的问题。在页面加载下添加一个"if (!IsPostBack)"可以解决这个问题。谢谢你的帮助。
试着这样写
<asp:LinkButton runat="server" ID="btnDelete" Text="Delete" OnCommand="btnDelete_Click" CommandArgument="<%# ((YourObjType)Container.DataItem).Id %>"
protected void btnDelete_Click(object sender, CommandEventArgs e)
{
//e.CommandArgument contains your id
}