4

我正在使用带有 Fluent Validation 的 ASP.NET MVC 3。我希望我的所有错误消息的措辞和格式都相同,无论它们是验证错误消息还是模型绑定错误消息。

假设我有以下视图模型:

[Validator(typeof(PersonValidator))]
public class Person
{
    [ScaffoldColumn(false)] public int    Id   { get; set; }
                            public string Name { get; set; }
                            public int    Age  { get; set; }
}

要使用 Fluent Validation 验证这一点,我可能会使用如下内容:

public class EditorValidator : AbstractValidator<EditorModel>
{
    public EditorValidator()
    {
        RuleFor(model => model.Month.Value).InclusiveBetween(0, 120)
    }
}

如果用户为 输入“abc” Age,这会导致模型绑定错误,而不是验证错误。这是因为“abc”不是int. 系统甚至不会询问“abc”是否在 0 到 120 之间,因为“abc”不能存储在Age.

这很好,也很有意义。问题是生成的错误消息是:

字段年龄必须是一个数字。

我希望消息的格式和措辞与 Fluent Validation 产生的其他错误消息一样。在这种情况下,我想:

“年龄”必须是数字。

我意识到这只是一个细微的区别,但我想控制模型绑定错误消息。

如何自定义模型绑定错误消息以匹配 Fluent Validation 使用的错误消息?

4

2 回答 2

4

我不确定是否有另一种方法可以做到这一点,但我使用Data Annotations Extensions,也可以通过 NuGet (Install-Package DataAnnotationsExtensions.MVC3) 获得这种确切类型的东西。这个包会给你一个IntegerAttribute,你可以从那里指定一个错误消息,如下所示:

[Integer(ErrorMessage = "'Age' must be a number.")]
public int Age { get; set; }
于 2011-06-27T03:31:19.367 回答
0

看看我在这里的回答:

如何在 MVC 中更改由 @Html 助手生成的“数据验证编号”消息验证

实际上,这是您提出的一个非常常见的问题,因此您应该在发布之前搜索一下 stackoverflow。

于 2011-06-27T20:43:43.673 回答