【问题标题】:Button OnClick() Event not Firing按钮 OnClick() 事件未触发
【发布时间】:2014-08-25 19:59:05
【问题描述】:

我有一个 asp.net 页面,其中我正在添加一个需要我添加另一个按钮事件的添加项。在下面的示例中,btnTwo 和 btnThree 触发它们的 OnClick() 事件并按应有的方式运行。然而,当我添加 btnOne 及其关联的 OnClick() 事件时,它不会触发我为字符串测试设置的断点。我在运行项目时检查了该页面,并注意到 btnTwo 和 btnThree 在控件中有一个 onclick dopostbackwithoptions 但 btnOne 没有。同样,当单击 btnOne 时,页面加载事件也不会触发。我不知道这是怎么回事或我做错了什么。我还尝试按照另一个在线资源的建议对解决方案进行干净构建,但它仍然无法正常运行。

页面:

<table style="width: 210px" border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td style="padding-right: 50px">
            <asp:Button ID="btnOne" runat="server" CssClass="DefaultButton" Width="120px" OnClick="btnOne_Click" />
        </td>
        <td style="padding-right: 50px">
            <asp:Button ID="btnTwo" runat="server" ValidationGroup="QtyGroup" CssClass="DefaultButton" Width="90px" OnClick="btnTwo_click" />
        </td>
        <td>
            <asp:Button ID="btnThree" runat="server" CssClass="DefaultButton" Width="90px" OnClick="btnThree_click" />
        </td>
    </tr>
</table>

代码隐藏:

protected void btnOne_Click(object sender, EventArgs e)
    {
        string test = "";
    }

【问题讨论】:

  • 尝试在您的 asp.net 代码中将 AutoPostBack 属性设置为 true
  • 我刚刚尝试将 AutoPostBack 设置为 true,但它不起作用。我还尝试将控件包装在更新面板中,但效果不佳。
  • 在不使用 UpdatePanel 的情况下尝试并使其正常工作,然后再使用 UpdatePanel 进行尝试。 UpdatePanel 确实会使事情复杂化。
  • 显示包含更新面板和 aspx 控件的标记.. 设置为它的更新面板的模式是什么应该是 UpdateMode="Conditional" 也尝试将 id 分配给表我不为您的表查看类似以下内容&lt;table id=
  • 最初我没有在控件上包装 UpdatePanel,所以我想试一试,看看是否能解决我的问题。然而,它没有,所以我删除了它。我还进入了设计模式以单击按钮以查看它是否会将我引导至 OnClick() 事件,并且确实如此。但是无论出于何种原因,当我运行该项目时,在我的示例中,btnOne 是我从浏览器中检查它时唯一没有单击事件的控件。所以我不知道从这里到哪里去。

标签: c# asp.net


【解决方案1】:

我敢打赌你的按钮事件正在触发,但你的调试没有触发。我在错误地将解决方案绑定到 iis 时看到了这一点。在您的事件中,添加一些代码来更新标签,我敢打赌它会起作用。检查您的网址。我看到当我的 IIS 绑定不正确时,url 从 localhost:someport 更改为 dns 名称。这可能会导致您的调试断点无法触发。

【讨论】:

  • 我做了你的建议,它有效。即使断点没有触发,标签也会在按钮单击时填充文本。打算花一些时间查看我的解决方案上的 IIS 设置。谢谢!
  • 刚刚查看了 IIS,主机名的站点绑定不存在。我添加了 dns 名称,一切正常,包括所有断点。这解决了我的问题。
【解决方案2】:

重新启动 VS,然后从 .aspx 页面中删除事件名称并再次创建一个新事件。有时VS有一些问题。它有时对我有用。

【讨论】:

  • 感谢您查看我的帖子。我尝试了您的建议,但没有成功。
【解决方案3】:

尝试将访问修饰符更改为public,看看是否有任何不同。我注意到 WPF 中有类似的行为。

我还注意到 btnTwo 和 btnThree 的事件处理程序在处理方法名称中具有小写 click。我不确定您是在此处手动输入代码还是复制/粘贴代码。检查以确保名称匹配。

【讨论】:

  • 感谢您查看我的帖子。我发布的示例是从原始解决方案中复制的,只是我更改了按钮 ID 以使帖子更易于阅读。 btnTwo 和 btnThree 的按钮事件处理程序在代码隐藏中匹配其相应的 onclick 事件,并按应有的方式运行。因此,我尝试将访问修饰符更改为 public 并在解决方案上进行干净构建,但 btnOne 仍然无法正常工作。它甚至不会触发我在页面加载事件上的断点。
【解决方案4】:

您是否从其他页面/应用程序复制了此方法?如果是则它将不起作用,因此您需要删除分配给按钮的事件和事件名称然后转到设计并转到按钮甚至属性转到onClick事件双击它旁边,它会生成事件并自动分配按钮的事件名称。这应该工作

【讨论】:

  • 感谢您查看我的帖子。不,它没有被复制,因为我正在为页面构建一个新组件。