我使用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验证无法正确处理多级结构以生成客户端验证标记。但是在将其发回服务器之后,服务器端验证将按照此字段的预期触发。如何在客户端获得验证?
答案 0 :(得分:0)
最终要解决此问题,我必须为作者类创建自定义编辑器模板,并为单独的Fluent Validator 创建Author类,包含Author类属性所需的所有规则。在这种情况下,这种方法非常有效。这次客户端验证可能会按预期触发,服务器端也是如此。
顺便说一句,我还尝试为Author类创建部分视图而不是自定义编辑器模板。客户端验证能够被触发,但在回发后,部分视图无法绑定到控制器的操作方法的 Book.Author 。