我正在构建一个asp.net Web应用程序。在登录页面中,用户名和密码文本框是必填项,当用户尝试不填写两个框而进行验证时,我会收到一条非常好的消息,如下所示:
但是,当我在提交按钮上添加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消息。
MSDN for onserverclick指出:“此事件导致从客户端到服务器再到服务器的往返。这与客户端的OnClick事件故意不同。”
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" />