我有一个包含多个验证器控件的注册表单。我正在通过提供用户名 AJAX(使用jQuery,而不是UpdatePanel)。如果使用了用户名,我想使页面无效,就像其他ASP.NET验证器从我的JavaScript函数那样做。这可能吗?实例
这是我目前的功能:
// In head...
<script type="text/javascript">
$(document).ready(function () {
$('#<%= username.ClientID %>').blur(function () {
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: 'MyService.asmx/CheckAvailability',
dataType: 'json',
data: '{ "username": "' + username + '" }',
success: function (response) {
// stuff
// If username is taken, invalidate
}, error: function () { /* stuff */ }
});
});
});
</script>
// The markup...
<dl><dt>Username</dt>
<dd>
<asp:textbox id="username" runat="server" />
<asp:requiredfieldvalidator id="usernameRequiredValidator" runat="server"
controltovalidate="username"
errormessage="Required"
display="Dynamic" />
<span id="avail_response"></span>
<!-- More stuff... -->
答案 0 :(得分:2)
This link提供了对ASP.Net验证的深入解释。向下滚动到“客户端API”段落,其中说明您可以设置Page_IsValid变量。但请注意,无法保证此API在将来的.NET版本中保持不变,因此请检查是否存在Page_IsValid。
编辑:
对不起,在我之前的评论中,我有点匆忙,我只是回答了你的问题而没有看大局。我只是重读了你的问题,事实上,它什么都不做,因为当你用户点击提交按钮时,它会触发所有验证器的重新验证。由于文本框用户名具有值,因此您的requiredvalidator有效且表单提交。
我认为从长远来看(以及不直接调用.NET的javascript函数的更好的解决方案)如下:
这有点绕道而且它是未来的证明&amp;比使用.NET验证器框架的javascript函数确定如何使用它更容易。