无法在ListView ItemTemplate中为LinkBut​​ton创建事件处理程序

时间:2011-02-01 13:07:50

标签: c# .net asp.net listview event-handling

这是一个奇怪的问题。我有一个带有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 EditLinkBut​​tonClicked(object sender,EventArgs e)     {     -----     }

public void DeleteLinkBut​​tonClicked(object sender,EventArgs e)     {     -----     }     [完全相同]

第一项工作绝对正常。但是,如果我附加第二个处理程序,我会收到以下错误 enter image description here

我错过了什么吗? 注意 - 如果我尝试将第一个事件处理程序附加到第二个链接按钮,则没有错误。[即EditLinkBut​​tonClicked to DeleteLinkBut​​tonClicked] 仅当我尝试将DeleteLinkBut​​tonClicked附加到DeleteLinkBut​​ton

时才会出现问题

有任何帮助吗?在此先感谢

3 个答案:

答案 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" />