C# 基于AJAX表单的Fluent验证

C# 基于AJAX表单的Fluent验证,c#,asp.net-mvc,jquery,fluentvalidation,C#,Asp.net Mvc,Jquery,Fluentvalidation,我正在ASP.NETMVC中创建一个操作/视图,我想使用AJAX/jQuery发布它。 我在视图模型中使用Fluent验证进行验证 我这样做时是否可以进行客户端验证?为了使用fluent验证触发客户端验证,脚本会是什么样子 我是使用jquery创建一个常规表单并创建一个提交事件并调用某个函数,还是改用Ajax.BeginForm()呢?我使用jquery对数据注释进行不引人注目的验证,但看起来您需要与我相同的设置(下面的前两个选项)以及另一个步骤: 在视图或web.config中启用客户端验证

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

我这样做时是否可以进行客户端验证?为了使用fluent验证触发客户端验证,脚本会是什么样子


我是使用jquery创建一个常规表单并创建一个提交事件并调用某个函数,还是改用Ajax.BeginForm()呢?

我使用jquery对数据注释进行不引人注目的验证,但看起来您需要与我相同的设置(下面的前两个选项)以及另一个步骤:

  • 在视图或web.config中启用客户端验证
  • 在视图或web.config中启用不引人注目的验证
  • 将FluentValidationModelValidatorProvider添加到ModelValidatorProviders集合
关于前两个,请参见。最后一个见


如果要通过AJAX提交表单,可以使用
$(“#表单_选择器”).valid()触发整个表单的验证,或者使用
$(“#表单_选择器”).valid()触发单个输入的验证。如果验证成功,则对valid()的调用返回true(否则返回false)。

Fluent validation是一个服务器端验证库。因此,Fluent Validation支持一些基本的客户端验证(如required、maxlength等),您不能在客户端使用所有服务器端规则

如果您想向Fluent Validation添加完全的客户端支持,则需要在项目中再添加一个库。可以解决您的问题

您需要像这样创建表单:

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)

现在所有的Fluent验证规则都在客户端工作。

请参阅SO@patel.milanb上的这篇文章。这篇文章不是在讨论使用jQuery的AJAX表单。我的客户端验证在常规页面上运行良好,而该页面不是通过AJAX提交的。我想知道我是否需要做一些特殊的事情来连接jQuery AJAX表单提交…或者是否有可能这样做。通过AJAX提交表单并使用jQuery验证表单?这就是你想要的吗?我以为问题很清楚。我想知道在通过AJAX和jQuery提交表单时,我如何能够进行流畅的验证。我正在使用Fluent验证库。它在常规格式的post中运行良好。如何使用AJAX表单使其工作。那么,在您看来,通过AJAX提交表单的脚本是什么样子的呢?你需要调用什么来触发验证吗?啊!是的,您可以调用$('#表单_选择器').valid()来验证整个表单,也可以调用$('#字段_选择器').valid()来验证特定的输入。
valid()
调用将返回true或false。更新的答案包括了这一点——我也误解了。
[HttpPost, FormValidator]
public IActionResult Save(FormViewModel viewModel)