不引人注意的客户端验证错误

时间:2011-04-17 19:32:13

标签: c# asp.net-mvc asp.net-mvc-3

我正在使用asp.net mvc 3并且我一直收到以下错误。

  

验证类型名称不引人注目   客户端验证规则必须是   独特。以下验证类型   不止一次见过:数字

我不知道我有这个

@Html.TextBoxFor(x => x.Mark)

//我的viewmodel

   [Required(ErrorMessage = "Message")]
        [Number(ErrorMessage = "Message")]
        public decimal Mark { get; set; }

如果我将它从小数改为字符串,它就不会抱怨。发生了什么事?

修改

我认为正是因为[Number(ErrorMessage = "Message")]注释。我正在使用此库 Data annotation extensions

似乎并不是因为我使用小数。谁知道为什么?

3 个答案:

答案 0 :(得分:9)

如果您使用的是十进制类型,则不需要使用[Numeric]属性,因为MVC已经看到您正在使用数字类型并为您注入(导致错误)。当您更改为字符串时,需要[数字]来告知验证您希望该字符串如何工作。

在DataAnnotationsExtensions的下一个版本中,我将更改[Numeric]属性,以便在这种情况下它不会与MVC版本冲突。但是现在,删除[Numeric]属性就好了,因为数字类型的[Numeric]无论如何都是多余的。

答案 1 :(得分:2)

您可能有多个模型验证程序,它们两次添加相同的客户端规则,您使用自定义的validatiOn提供程序吗?

答案 2 :(得分:0)

Required将变为重复,因为Mark不可为空。我会将其更改为decimal?