我正在使用asp.net,我有一个转发器。我想从其中一个项目做出回应,这个项目已经由repeater显示。这是我的代码:
<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>
这是我的代码隐藏:
protected void RepeaterDeleteitemcommand(object source, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{
case "Click":
Label1.Text = "ok !";
break;
}
}
当我运行此代码时,我收到如下错误:无效的回发或回调参数。使用配置或&lt;%@ Page EnableEventValidation =&#34; true&#34;启用事件验证。 %GT;在一个页面中。出于安全考虑,此功能可验证回发或回调事件的参数是否来自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证。谢谢您的帮助
答案 0 :(得分:1)
我解决了这个问题并想写在这里,所以我可以帮助任何有同样问题的人。添加一个&#34; if(!IsPostBack)&#34;在pageload下解决问题。谢谢你的帮助。
答案 1 :(得分:0)
尝试使用类似的东西
<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
}