Asp.Net 没有jQuery的核心验证



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

我创建了一个与原始验证库兼容的库,但要小得多,不需要jQuery。如果要减少资产的有效负载大小,可以将其用作直接替换:

https://github.com/kraaden/unobtrusive-validation

这个库似乎功能更完整,作为 JQuery 不显眼验证的直接替代品:

https://github.com/haacked/aspnet-client-validation

https://www.npmjs.com/package/aspnet-client-validation?activeTab=readme

对我来说,特别感兴趣的是使用MutationObserver来观察DOM的变化。这允许您动态添加字段并自动连接其验证!

截至 2023 年 5 月,它似乎也比此线程中列出的其他库更新得更近。

我不知道有任何包可以将输入字段的 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 属性支持,则必须自己扩展标签助手。

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

最新更新