2011-09-09 119 views
2

我的问题是有一个真正的死锁情况超过验证的目的。平衡asp.net服务器端验证与客户端jQuery验证

我可以在ASP.net

  1. 做验证两件事情使用验证控件
  2. 使用jQuery

现在有几种情况:

  1. 如果我使用jQuery我无法使用服务器端page.isvalid方法从t执行验证他服务器端。

  2. 如果我使用验证控件实际加载验证控件的页面。它使页面变得庞大。所以我想避免那部分。我不希望带宽较低的客户端非常缓慢地加载页面。由于这些验证控件生成视图状态和自定义验证JavaScript。

  3. 如果在浏览器中关闭JavaScript调试或关闭JavaScript执行。客户端的jQuery和验证控件都不会发生。所以在这种情况下,我唯一的选择是使用page.isvalid方法从服务器端验证表单。

现在有可能考虑所有这三种情况,并执行服务器端验证,因为JavaScript验证是脆弱的我真的不想依赖它。但同时我看到服务器端控件,它们非常笨重,所以不牺牲我的带宽(这绝对不是我想要的,我倾向于使用JavaScript验证)。此外,如果我的jQuery由于JavaScript执行已关闭而失败。如何执行服务器端验证,而无需使用任何验证控件?

+2

我不确定我关注。服务器端验证应该完全独立于客户端验证。无论如何,永远不要相信客户端输入 - 始终在服务器端进行验证。 – NullUserException

回答

1

我认为你高估了使用验证控件的成本。它确实为页面增加了一些开销,但并不像你想象的那么多。如果你想使用Page.IsValid,我会建议使用验证控件。由于性能方面的原因,我从来不知道任何人远离他们。

+0

是的,我同意客户端验证不可信任的观点...如果有50个输入控件,则仍然存在。我必须为他们放置50个验证控件...请原谅我,如果我错了,因为我对这个很新鲜..所以不加起来到页面的视图状态并增加网络延迟?我提到我的观点。并有任何其他方式我可以提供服务器端验证除了page.isvalid +验证控件? – Joy

1

+1张贴到现在双方的意见,但我想补充一点,即使要始终进行服务器端验证,客户端验证是好的,因为它提供即时反馈给用户,而不是发布返回整个页面并等待几秒钟以返回错误列表。例如,在移动开发中,客户端验证非常重要,因为网络延迟通常较大,您希望尽可能保证所提交的输入将一次通过服务器端的验证。

总之,客户端验证永远不应该被信任,但应该始终执行。

作为一个品味的问题,我宁愿使用JQuery执行验证,而不是任何asp.net验证控件。

+0

@lcarus jquery是一个不错的选择,但我想平衡服务器端+客户端网站..但正如我在上面评论中提到的服务器端验证只通过page.Isvalid +验证控件完成。有没有其他具体的方式可以做到这一点?除了验证控制? – Joy