1

我正在 ASP.net MVC 中创建一个我想使用 AJAX / jQuery 发布的操作/视图。我正在使用 Fluent Validation 在我的视图模型中进行验证。

执行此操作时是否可以进行客户端验证?为了使用流利的验证触发此客户端验证,脚本会是什么样子?

我是创建一个常规表单并使用 jquery 创建一个提交事件并调用某些东西,还是只使用 Ajax.BeginForm() 来代替?

4

2 回答 2

2

我使用带有数据注释的 jQuery 非侵入式验证,但看起来您需要与我相同的设置(下面的前两个选项)以及另一个步骤:

  • 在您的视图或 web.config 中启用客户端验证
  • 在您的视图或 web.config 中启用不显眼的验证
  • 将 FluentValidationModelValidatorProvider 添加到 ModelValidatorProviders 集合

对于前两个,请参阅启用客户端验证。对于最后一个,请参阅Fluent Validation: Integration with ASP.NET MVC

如果您想通过 AJAX 提交表单,您可以使用 触发对整个表单$('#form_selector').valid()或单个输入的验证$('#input_selector').valid()。如果验证成功,则对 valid() 的调用返回 true(否则返回 false)。

于 2011-10-03T20:28:27.267 回答
0

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 规则都在客户端工作。

于 2019-06-16T11:15:52.050 回答