【问题标题】:MVC html5 validation [duplicate]MVC html5验证[重复]
【发布时间】:2018-04-10 13:46:43
【问题描述】:

我只是想澄清一些关于 ASP.NET MVC 和 HTML5 验证的事情。 我在我的项目中禁用了所有 jQuery 验证,因此我只能使用 HTML5 验证,因为它的外观和感觉都比 jQuery 好得多。

问题是,HTML 5 验证似乎对 C# 模型中的 MVC 注释没有反应。 (例如[Required][Compare("Password"]))它确实会对元素的真实html 属性做出反应(例如new { required = "required" })。

所以 HTML 5 验证适用于 JavaScript,对吗? 这不会很容易受到攻击,因为可以禁用浏览器 JavaScript 并绕过验证?

还有可能找到这些 HTML 5 验证脚本的位置,以便我可以更改它们或添加新的(因为我没有找到任何用于实时密码确认的)或者我应该只在我的 @ 中写新的 <script></script> 987654325@?

任何有关这方面的信息都会有所帮助,谢谢。

【问题讨论】:

  • 任何前端验证(HTML5 或 JS)都是为了更好的最终用户体验,因为它取决于浏览器和客户端。所以它应该始终在服务器端进行检查和验证!

标签: javascript asp.net-mvc html validation


【解决方案1】:

使用 MVC 验证的好处是它在客户端和服务器端运行。如果您禁用客户端验证,那么您仍然可以在您的操作方法中检查ModelState.IsValid。这是防止在 Internet 浏览器禁用 JavaScript 时在数据库中插入垃圾以及保护数据免受恶意攻击的必要条件。

【讨论】:

  • 是的,我的所有控制器中都有 Model.IsValid 但这真的足够了吗?
  • 服务器验证真正保护您免受攻击。客户端验证不能保证在所有情况下。客户端验证是为了改善用户体验。
【解决方案2】:

仅使用 HTML5 验证可能“看起来和感觉”更好,但您确实错过了开箱即用的功能。其他开发人员可能习惯于使用 ASP.NET MVC 样式的验证,当他们问您“为什么不只使用 HTML 帮助程序和 jQueryValidate?”时,您会希望给他们充分的理由。

MVC 框架 - 与典型项目中的 jQueryValidate 相结合 - 解决了 Web 开发人员通常面临的挑战;维护在服务器和客户端上一致工作的验证规则。

它并不完美,但如果您从头到尾遵循 MVC 验证教程(或阅读 MVC 书籍中的验证章节),您将开始欣赏开箱即用解决方案的强大功能和灵活性.

其他开发人员也更容易理解您的验证代码是如何工作的,通过遵循框架提供的工具,您出错的可能性更小。自然,技术——尤其是网络技术——处于不断变化的状态,很大程度上取决于上下文。

【讨论】:

  • 那么 jQuery 负责客户端和服务器端?听起来不错。我可以做一些 jQuery 并让 jQuery 验证看起来类似于 HTML5。
  • 不,Razor 页面上的 HTML 助手(您应该使用它来创建表单字段)生成带有验证的 HTML,该验证基于您的模型的注释,jQuery validate 应该自动连接到客户端。
猜你喜欢
  • 2015-08-06
  • 2021-05-09
  • 1970-01-01
  • 2016-05-27
  • 2016-01-17
  • 2014-06-12
  • 2012-03-15
  • 1970-01-01
  • 2015-07-01
相关资源
最近更新 更多