将 OnServerClick 与 "required" 字段一起使用

Using OnServerClick with "required" field

我正在构建一个 asp.net 网络应用程序。在登录页面中,用户名和密码文本框是 必需的,当用户尝试验证而不填写两个框时,我收到一条非常好的消息,如下所示:

但是当我将 onserverclick 事件处理程序添加到提交按钮时,此功能不再有效 - 如果用户使用空文本框进行验证,则不会发生任何事情。这是登录表单的代码。

<fieldset>
  <%--Input--%>
    <div class="form-group">
      <label for="UsernameTextBox" class="col-lg-2 control-label text-right">Username</label>
      <div class="col-lg-10">
        <input type="text" class="form-control" placeholder="username" required id="UsernameTextBox" runat="server">
      </div>
    </div>

    <div class="form-group">
      <label for="PasswordTextBox" class="col-lg-2 control-label text-right">Password</label>
      <div class="col-lg-10">
        <input type="password" class="form-control" placeholder="password" required id="PasswordTextBox" runat="server">
      </div>
    </div>

    <%--Buttons--%>
      <div class="form-group">
        <div class="col-lg-10 col-lg-offset-2">
          <button type="submit" class="btn btn-primary btn-lg" onserverclick="Login_Click" id="LoginBtn" runat="server"><i class="glyphicon glyphicon-ok"></i>
          </button>
          <button type="reset" class="btn btn-default btn-lg"><i class="glyphicon glyphicon-repeat"></i>
          </button>
        </div>
      </div>
</fieldset>

我刚刚一直在尝试这个。当我在按钮服务器端函数上放置一个断点并单击时,我看到它到达了断点,如果我再次单击该按钮,则会出现 Required 消息。

onserverclick 状态的 MSDN "This event causes a round trip to occur from the client to the server and back. It is deliberately different from the client-side OnClick event."

https://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlbutton.onserverclick(v=vs.110).aspx

该按钮设置了一个 onclick 属性,该属性将执行回发并绕过浏览器所需的验证。

<button onclick="__doPostBack('ctl00$MainContent$btnSubmit','')" id="MainContent_btnSubmit"> Submit </button>

我发现,如果您使用标准 asp:button,则会触发所需的验证。

<asp:Button runat="server" ID="btnSubmit" OnClick="btnSubmit_Click" />