【问题标题】:Input submit onclick and onserverclick not working输入提交 onclick 和 onserverclick 不起作用
【发布时间】:2018-08-02 10:20:05
【问题描述】:

我正在使用以下代码制作一个简单的登录屏幕:

<form id="login">
<div class="formHeader">
  <h1>Login</h1>
</div>
<div class="formDiv">
  <input type="text" placeholder="Email" name="txtEmail"/>
  <div class="inputImage fa fa-user"></div>
</div>
<div class="formDiv">
  <input type="password" placeholder="Password" name="txtPassword"/>
  <div class="inputImage fa fa-lock"></div>
</div>
<div class="formDiv">
  <label id="remember">
    <input type="checkbox" name="cbxRemberMe" value="Checked"/>
    <div class="checkbox"></div><span>Remember me</span>
  </label>
</div>
<div class="formDiv">
  <input type="submit" value="LOGIN" onclick="btnLogin_Click" />
</div>
<div class="formFooter"><a class="forgot" href="#">Forgot Password</a></div>

和后端代码

 protected void btnLogin_Click(object sender, EventArgs e) 
{

}

但是按钮根本不调用后端代码。

除了 URL 从 “http://localhost:15726/Pages/Login.aspx”到 "http://localhost:15726/Pages/Login.aspx?txtEmail=&txtPassword=&ctl00=LOGIN"

我无法在表单中添加 Runat=Server 属性,因为我在此页面上有 2 个表单(登录和注册)

感谢任何帮助。

我尝试过的:

  1. 使用 Runat=Server、onclick() 和 OnServerClick()(交换并更改它们)

  2. 使输入类型=提交/输入类型=按钮

这些都不起作用。

【问题讨论】:

  • onclick 仅适用于客户端处理程序。您能否向我们展示更多后端,让我们更好地了解此页面的设置方式?
  • 这是网络表单,对吧?在这种情况下,如果您不能使用 runat=server,那么我认为您不能将按钮直接绑定到服务器端函数,但您应该为表单提交,然后您可以在页面加载中检查请求参数(或预加载或您使用的),然后根据输入调用正确的方法。
  • 先做一些关于webforms基础的教程也许是明智的。
  • XY Problem。这不是 ASP.NET Web 窗体的工作方式。

标签: c# html asp.net


【解决方案1】:

你尝试过这两种方法吗?

&lt;asp:Button runat="server" id="btnLogin" Text="LOGIN" OnClick="btnLogin_Click"&gt;

&lt; button onserverclick="btnLogin_Click" runat="server" id="btnLogin"&gt;LOGIN&lt;/button&gt;

编辑

这应该是评论而不是回答。很抱歉。

但是,整个表单似乎与“webform”表单不兼容。如果您希望能够从表单元素中读取值,那么表单也应该有一个 runat="server" 标记。

【讨论】:

    【解决方案2】:

    首先,您需要指定它是服务器控件还是客户端控件。指定runat=server 以告知它应该可用于代码隐藏文件。

    最后,将任何javascript 函数与OnClick 一起使用,并将任何代码隐藏函数与OnServerClick 一起使用

    类似的,

    aspx

    纯 HTML

    <input type="submit" runat="server" value="LOGIN" onclick="return js_btnLogin_Click()" OnServerClick="btnLogin_Click"/>
    

    或使用 ASPX 控件

    <asp:Button runat="server" Text="LOGIN" OnClientClick="return js_btnLogin_Click()" OnClick="btnLogin_Click">
    

    javascript

    <script type="text/javascript">
    
        function js_btnLogin_Click()
        {
          //return false, in case if you want to stop posting the form to the server
          return true;
        }
    
    </script>
    

    代码隐藏

    protected void btnLogin_Click(object sender, EventArgs e) 
    {
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 2013-06-12
      • 1970-01-01
      • 2014-10-06
      相关资源
      最近更新 更多