Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在ListView ItemTemplate中为LinkButton创建事件处理程序_C#_.net_Asp.net_Listview_Event Handling - Fatal编程技术网

C# 无法在ListView ItemTemplate中为LinkButton创建事件处理程序

C# 无法在ListView ItemTemplate中为LinkButton创建事件处理程序,c#,.net,asp.net,listview,event-handling,C#,.net,Asp.net,Listview,Event Handling,这是一个奇怪的问题。我有一个带有2个链接按钮的列表视图。“编辑”和“删除” 我能够为第一个linkbutton(更新)附加事件处理程序。事件处理程序中的代码执行良好。但是如果我尝试为第二个链接按钮(Delete)附加一个事件处理程序,我会得到一个错误 我的项目模板如下所示 <ItemTemplate> <tr> <td>

这是一个奇怪的问题。我有一个带有2个链接按钮的列表视图。“编辑”和“删除” 我能够为第一个linkbutton(更新)附加事件处理程序。事件处理程序中的代码执行良好。但是如果我尝试为第二个链接按钮(Delete)附加一个事件处理程序,我会得到一个错误

我的项目模板如下所示

<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(对象发送方,事件参数e) { ----- }

public void DeleteLinkButtonClicked(对象发送方,事件参数e) { ----- } [完全相同]

第一项工作绝对好。但是如果我附加第二个处理程序,我会得到以下错误

我错过什么了吗? 注意-如果我尝试将第一个事件处理程序附加到第二个链接按钮,则不会出现错误。[ie EditLinkButtonClicked to DeleteLinkButtonClicked] 仅当我尝试将DeleteLinkButtonClicked附加到DeleteLinkButton时,才会出现此问题

有什么帮助吗?提前感谢

这将是三件事:

  • 您需要清理、重建解决方案并重置IIS或关闭ASP.NET开发服务器(可能某些缓存阻止您执行代码隐藏类的最新版本)

  • 打字错误。再检查一下

  • 事件处理程序没有正确的签名

无论如何,为什么不使用“命令”事件呢

您可以执行OnCommand=“Item_Command”,事件处理程序将具有CommandEventArgs,它为您提供CommandName和CommandArgument,因此您可以切换命令名并分别调用用于编辑或删除的逻辑

请在此处阅读更多信息:

    • 这将是三件事:

      • 您需要清理、重建解决方案并重置IIS或关闭ASP.NET开发服务器(可能某些缓存阻止您执行代码隐藏类的最新版本)

      • 打字错误。再检查一下

      • 事件处理程序没有正确的签名

      无论如何,为什么不使用“命令”事件呢

      您可以执行OnCommand=“Item_Command”,事件处理程序将具有CommandEventArgs,它为您提供CommandName和CommandArgument,因此您可以切换命令名并分别调用用于编辑或删除的逻辑

      请在此处阅读更多信息:


      尝试禁用Page指令的EnableEventValidation并检查它

      <%@ Page EnableEventValidation="false" %>
      
      
      
      如果有帮助,您应该知道:

      此功能可降低发生故障的风险 未经授权或恶意回发 请求和回调。这是强烈的 建议您不要禁用 事件验证

      关于
      并尝试以建议的方式避免这种情况。

      尝试禁用Page指令的EnableEventValidation并检查它

      <%@ Page EnableEventValidation="false" %>
      
      
      
      如果有帮助,您应该知道:

      此功能可降低发生故障的风险 未经授权或恶意回发 请求和回调。这是强烈的 建议您不要禁用 事件验证

      关于
      并尝试以建议的方式避免这种情况。

      同样的问题也出现在我的代码中。我使用
      CausesValidation=“false”


      我的代码中也出现了同样的问题。我使用
      CausesValidation=“false”

      
      
      谢谢Matias。。我检查了你所有的建议。但是没有运气。但是你提到的替代方法肯定会帮助我前进。是的,这是我在任何地方都在使用的方法。对我来说,命令比单独的处理程序好。它是MVC、MVP或任何将用户事件转化为操作的工具的理想选择。谢谢Matias。。我检查了你所有的建议。但是没有运气。但是你提到的替代方法肯定会帮助我前进。是的,这是我在任何地方都在使用的方法。对我来说,命令比单独的处理程序好。它是MVC、MVP或任何将用户事件转换为操作的工具的理想选择。