我正在 ASP.net MVC 中创建一个我想使用 AJAX / jQuery 发布的操作/视图。我正在使用 Fluent Validation 在我的视图模型中进行验证。
执行此操作时是否可以进行客户端验证?为了使用流利的验证触发此客户端验证,脚本会是什么样子?
我是创建一个常规表单并使用 jquery 创建一个提交事件并调用某些东西,还是只使用 Ajax.BeginForm() 来代替?
我正在 ASP.net MVC 中创建一个我想使用 AJAX / jQuery 发布的操作/视图。我正在使用 Fluent Validation 在我的视图模型中进行验证。
执行此操作时是否可以进行客户端验证?为了使用流利的验证触发此客户端验证,脚本会是什么样子?
我是创建一个常规表单并使用 jquery 创建一个提交事件并调用某些东西,还是只使用 Ajax.BeginForm() 来代替?
我使用带有数据注释的 jQuery 非侵入式验证,但看起来您需要与我相同的设置(下面的前两个选项)以及另一个步骤:
对于前两个,请参阅启用客户端验证。对于最后一个,请参阅Fluent Validation: Integration with ASP.NET MVC。
如果您想通过 AJAX 提交表单,您可以使用 触发对整个表单$('#form_selector').valid()
或单个输入的验证$('#input_selector').valid()
。如果验证成功,则对 valid() 的调用返回 true(否则返回 false)。
Fluent Validation 是一个服务器端验证库。因此,Fluent Validation 支持一些基本的客户端验证(如 required、maxlength 等)。您不能在客户端使用所有服务器端规则。
如果你想为 Fluent Validation 添加完整的客户端支持,你需要在你的项目中再添加一个库。表单助手可以解决您的问题。
https://github.com/sinanbozkus/FormHelper
您需要像这样创建表单:
var formConfig = new FormConfig(ViewContext)
{
FormId = "ProductForm",
FormTitle = "New Product",
BeforeSubmit = "ProductFormBeforeSubmit", // optional
Callback = "ProductFormCallback" // optional,
};
// <form id="@formConfig.FormId" asp-controller="Home" asp-action="Save"
// ...
@await Html.RenderFormScript(formConfig)
之后,您需要将 [FormValidator] 属性添加到您的操作中。
[HttpPost, FormValidator]
public IActionResult Save(FormViewModel viewModel)
现在所有 Fluent Validation 规则都在客户端工作。