在ASP.NET中,仅显示客户端验证并使用客户端和服务器验证器。

3
如果我有以下内容:
<asp:TextBox id="test" runat="sever"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ControlToValidate="test"  
ErrorMessage="Required"></asp:RequiredFieldValidator>
<asp:Label runat="server" id="lblStatus"></asp:Label>

如果在代码后端,我将标签设置为“如果文本框为空,则必须输入值”,以便在服务器端进行验证,这是可以的,但是如果启用了javascript,则不希望同时显示客户端验证和服务器端标签。 这种情况下,如果javascript已启用,我是否只需要禁用客户端验证器呢?
3个回答

1

是的。 :)

嗯,我不确定我是否理解了你的问题,因为看起来你已经自己回答了它。你不能只是禁用客户端验证器来实现你想要的吗?

<asp:RequiredFieldValidator runat="server" ControlToValidate="test"
    ErrorMessage="Required" EnableClientScript="False"/>

1
实际上,你可以只使用一个验证器来完成客户端和服务器端的验证。ASP.Net会根据需要决定是仅触发客户端验证还是同时触发客户端和服务器端验证,只需要你提供一点帮助。你永远不应该仅依赖客户端验证,但服务器端验证可以保持静默,也就是说用户不需要看到两个错误消息。
因此,你不需要自己的状态标签,并且你需要在页面触发的事件处理程序中添加一个检查。
protected void btnSubmit_Click(object sender, EventArgs e)
{
    if(!Page.IsValid)
    {
        return;
    }
}

0

我不确定我理解了问题,但您可以在JavaScript代码中执行验证并避免PostBack。

var doSomething = function(sender, args){
 if(Page_IsValid){
  //Do something cool
  return true;
 }else{
  return false;
 }
}

今天在工作中我遇到了类似的问题,请参考下面的链接,它非常有用。
ASP.NET深入验证 http://msdn.microsoft.com/en-us/library/aa479045.aspx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接