【问题标题】:C# code behind for Button Click Event, ASP.NET按钮单击事件背后的 C# 代码,ASP.NET
【发布时间】:2017-11-16 17:53:57
【问题描述】:

我正在使用同事在 .aspx 中提供的 HTML,我需要在 .aspx.cs(C#) 中编写他使用 HTML 创建的按钮的功能。 我正在处理的代码如下:

<div>
    <button style="padding: 10px; margin-bottom: 10px;" class="w3-round w3-blue">Ship</button>
    <button style="padding: 10px; margin-bottom: 10px;" class="w3-round w3-blue">Rate</button>
</div>

我是 HTML 新手,但在查看类似问题的解决方案时,我经常看到功能按钮的 HTML 代码看起来更像

<button type="submit" runat="server" id="btnLogin" class="button" onclick="btnLogin_Click();">

有时还有一个

<asp:

在开头。我尝试简单地将 runat 和 onclick 字段添加到与后面 aspx.cs 代码中的 C# 方法相对应的 HTML,但我无法使按钮单击实际触发后面代码中的方法。我假设如果我将 onclick 后面的名称的方法添加到 C# aspx.cs 代码中,那么它只会在单击按钮时执行此操作,但我显然错了。

我可以在不更改提供给我的 HTML 的情况下在后面的代码中编写按钮的功能吗?还是我必须先更改 HTML,如果可以,如何更改?

【问题讨论】:

  • asp:为前缀的是Web Forms控件。您可以阅读所有关于它们的信息in the documentation

标签: c# html asp.net button code-behind


【解决方案1】:

您可能会在按钮中添加runat="server" 属性,但我从未尝试过,坦率地说,使用适当的网络控件是最好的方法。

替换它们根本不应该改变页面的外观和感觉。只需添加 CssClass="xxx" 以应用 css(如果有),否则它们无论如何都会呈现为标准 html 元素。

您的标记应如下所示:

<asp:Button runat="server" id="btnLogin" Text="Log In" OnClick="btnLogin_Click" />

您的代码中匹配的事件处理程序如下所示:

protected void btnLogin_Click(object sender, EventArgs e)
{
    // Here's where you do stuff.
}

【讨论】:

    【解决方案2】:

    你需要更换

    onclick="btnLogin_Click();"
    

    onclick="btnLogin_Click"
    

    因为 asp.net 按钮的 onClick 属性需要包含它在 aspx.cs 文件中调用的函数的名称,而不是实际调用。

    【讨论】:

      【解决方案3】:
      <button type="submit" runat="server" id="btnLogin"  onserverClick="btnLogin_Click1">login </button> 
      

      只需将onClick 替换为onserverClick

      【讨论】:

        【解决方案4】:

        有一些方法可以从 html 控件访问处理程序后面的 asp.net 代码。您可以尝试添加 onserverclick 处理程序,或者您可以使用参数进行回发并将处理程序添加到构造函数中的回发。

        几个链接可以帮助你:

        https://forums.asp.net/t/1650304.aspx?Calling+code+behind+function+from+a+html+button

        calling server side event from html button control

        【讨论】:

          【解决方案5】:

          我的建议是将 HTML 控件更改为 &lt;asp:Button /&gt; 并通过 ASP.NET 连接事件处理程序。语法如下所示

          <asp:Button ID="Test" runat="server" Text="Button" OnClick="Test_Click" />
          

          【讨论】:

            【解决方案6】:

            如果您使用 Visual Studio/Express 之类的工具,请调出相关页面(aspx 页面)。

            从控件工具栏中将一个按钮拖到页面上。

            如果您在设计视图中双击该按钮,它将自动在后面的代码中创建事件处理程序。

            按钮控件有几个属性 OnClick 和 OnClientClick。使用 OnClientClick 触发页面上的任何 JavaScript。

            希望对你有帮助

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-05-24
              • 2018-12-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-03-21
              • 1970-01-01
              相关资源
              最近更新 更多