这是一个奇怪的问题。我有一个带有2个链接按钮的列表视图。 “编辑”和“删除” 我能够为第一个链接按钮(更新)附加事件处理程序。事件处理程序中的代码执行正常。但是如果我尝试为第二个链接按钮(删除)附加一个事件处理程序,我会收到一个错误。
我的项目模板看起来像这样。
<ItemTemplate>
<tr>
<td>
<asp:Label ID="MessageLabel" runat="server" Text='<%# Eval("Item") %>' />
</td>
<td>
<asp:Label ID="URLLabel" runat="server" Text='<%# Eval("URL") %>' />
</td>
<td>
<asp:LinkButton ID="EditLinkButton" runat="server" OnClick="EditLinkButtonClicked"
CommandArgument='<%# Eval("ItemID") %>'> Edit</asp:LinkButton>
</td>
<td>
<asp:LinkButton ID="DeleteLinkButton" runat="server" OnClick="DeleteLinkButtonClicked"
CommandArgument='<%# Eval("ItemID") %>'>Delete</asp:LinkButton>
</td>
</tr>
</ItemTemplate>
代码隐藏文件中声明的事件处理程序是
public void EditLinkButtonClicked(object sender,EventArgs e) { ----- }
public void DeleteLinkButtonClicked(object sender,EventArgs e) { ----- } [完全相同]
第一项工作绝对正常。但是,如果我附加第二个处理程序,我会收到以下错误
我错过了什么吗? 注意 - 如果我尝试将第一个事件处理程序附加到第二个链接按钮,则没有错误。[即EditLinkButtonClicked to DeleteLinkButtonClicked] 仅当我尝试将DeleteLinkButtonClicked附加到DeleteLinkButton
时才会出现问题有任何帮助吗?在此先感谢
答案 0 :(得分:1)
这是三件事:
您需要清理,重建解决方案,重置IIS或关闭ASP.NET开发服务器(可能有些缓存阻止您执行最新版本的代码隐藏类)。
< / LI>错字。仔细检查......!
事件处理程序没有正确的签名。
无论如何,你为什么不使用“Command”事件?
您可以执行OnCommand =“Item_Command”,事件处理程序将具有CommandEventArgs,它为您提供CommandName和CommandArgument,因此您可以切换命令名称并分别调用逻辑进行编辑或删除。
在这里阅读更多内容:
答案 1 :(得分:1)
尝试为Page指令禁用EnableEventValidation并进行检查。
<%@ Page EnableEventValidation="false" %>
如果有帮助那么你应该知道:
此功能可降低风险 未经授权或恶意回发 请求和回调。这是强烈的 建议您不要禁用 事件验证。
关于http://msdn.microsoft.com/en-us/library/system.web.ui.page.enableeventvalidation.aspx 并尝试以建议here的方式避免这种情况。
答案 2 :(得分:0)
我的代码中出现相同的问题。我通过使用CausesValidation="false"
<asp:LinkButton ID="YourID" runat="server" **CausesValidation="false"** OnClick="Category_btn_Click1" />