ASP.NET MVC Fluent验证在客户端不适用于视图模型的属性,这是另一种类

时间:2015-03-06 05:26:02

标签: validation asp.net-mvc-4

我使用Fluent验证的ASP.NET MVC应用程序。基本上有一个视图模型书,其上有作者作为属性,如:

class Book {
    string Title { get; set; }
    Author Author { get; set; }
    ...
}

class Author {
    string Name { get; set; }
    ...
}

在视图中, Book.Author.Name 有一个字段。

@Html.EditorFor(m => m.Author.Name)

为Book视图模型设置了Fluent验证规则,如此

RuleFor(book => book.Author.Name).NotEmpty();

然后我发现客户端的 Book.Author.Name 字段不会触发此验证。在检查字段的HTML标记时,我发现没有生成验证数据属性。似乎Fluent验证无法正确处理多级结构以生成客户端验证标记。但是在将其发回服务器之后,服务器端验证将按照此字段的预期触发。如何在客户端获得验证?

1 个答案:

答案 0 :(得分:0)

最终要解决此问题,我必须为作者类创建自定义编辑器模板,并为单独的Fluent Validator 创建Author类,包含Author类属性所需的所有规则。在这种情况下,这种方法非常有效。这次客户端验证可能会按预期触发,服务器端也是如此。

顺便说一句,我还尝试为Author类创建部分视图而不是自定义编辑器模板。客户端验证能够被触发,但在回发后,部分视图无法绑定到控制器的操作方法的 Book.Author