没有 jQuery 的 Asp.Net Core 验证

mar*_*onx 8 asp.net-core-mvc asp.net-core

是否有任何模式可以在没有 jquery + jquery 验证 + jq 不显眼验证的情况下使用 Asp.Net Core 客户端验证?我的意思是 2017 年,每个浏览器都可以在没有 JavaScript 的情况下处理大量 HTML5 输入验证器。

Joe*_*kes 0

我不知道有什么包可以将输入字段的 TagHelper 转换为 html5 元素标签。你也许可以很容易地制作一个。查看标签助手的源代码:https://github.com/aspnet/AspNetCore/blob/master/src/Mvc/Mvc.TagHelpers/src/InputTagHelper.cs

建议

最好的方法是确保在验证失败时收到 json 错误对象,并在 javascript 中处理该对象以显示错误(可能显示哪些字段失败)。创建一个可用于任何形式的通用函数。

如果前端需要的话,稍后手动微调/添加额外的标签/验证。但这不应该成为 MVP(最小可行产品)的一部分。

旧答案

取决于您正在寻找哪种验证。

jQuery 验证与数据注释相结合是最简单的一种,也是默认的一种。尽管 html 5 可以处理相当多的广泛测试。它无法处理任何深入的东西,例如相互依赖的属性。

另一种选择是使用流行的FluentValidation。仅验证服务器端,但使用 Ajax 和小型客户端框架来显示错误

最后一个选项是使用 Html5 输入验证。默认情况下,使用 dotnet 类型或一些注释只能部分实现这一点:http://www.davepaquette.com/archive/2015/05/13/mvc6-input-tag-helper-deep-dive.aspx。如果您想添加更深入的 html 5 属性支持,您必须自己扩展 taghelpers。

太糟糕了,你不能使用相同的前端和服务器端代码(就像 Nodejs 一样),但对于大型项目,我建议你采用选项 2。它可能听起来不是很敏捷,但 dotnet 通常相当快,如果你在中使用 FluentValidation与 Ajax Api 调用相结合,没有人会注意到服务器端的验证。最后,我发现数据注释总是缺乏适当的可能性来测试彼此依赖的属性,而且它很快就会变得非常糟糕。此选项的唯一缺点是您将验证与输入模型分开,因此外部开发人员并不总是可以直接看到验证。