MVC3 DataAnnotationsExtensions 错误使用数值属性

MVC3 DataAnnotationsExtensions error using numeric attribute

提问人:zynaps 提问时间:3/24/2011 最后编辑:zynaps 更新时间:10/7/2015 访问量:3257

问:

我已经安装了 Scott 的 Kirkland DataAnnotationsExtensions。

在我的模型中,我有:

[Numeric]
public double expectedcost { get; set; }

在我看来:

@Html.EditorFor(model => model.expectedcost)

现在,当页面尝试呈现时,我收到以下错误:

不显眼的验证类型名称 客户端验证规则必须是 独特。以下验证类型 被看过不止一次:数字

任何想法为什么我得到错误?

asp.net-mvc-3 数据注释 unobtrusive-javascript

评论


答:

15赞 mateuscb 3/24/2011 #1

快速的答案是简单地删除属性

[Numeric]

更长的解释是,根据设计,验证已经添加了一个 data-val-number,因为它是 double 类型。通过添加 Numeric,您可以复制验证。

这工作原理:

[Numeric]
public string expectedcost { get; set; }

因为该变量的类型为 string,并且您正在添加 Numeric 属性。

希望这会有所帮助

0赞 Jaco B 10/7/2015 #2

我基本上遇到了同样的问题,我设法用以下代码解决了它:(正如这里回答的那样:ASP.NET MVC - “验证类型名称必须是唯一的。)

使用系统; 使用 System.Web.Mvc; 和 ValidationRule:

公共类 RequiredIfValidationRule : ModelClientValidationRule { private const string Chars = “abcdefghijklmnopqrstuvwxyz”;

public RequiredIfValidationRule(string errorMessage, string reqVal,
    string otherProperties, string otherValues, int count)
{
    var c = "";
    if (count > 0)
    {
        var p = 0;
        while (count / Math.Pow(Chars.Length, p) > Chars.Length)
            p++;

        while (p > 0)
        {
            var i = (int)(count / Math.Pow(Chars.Length, p));
            c += Chars[Math.Max(i, 1) - 1];
            count = count - (int)(i * Math.Pow(Chars.Length, p));
            p--;
        }
        var ip = Math.Max(Math.Min((count) % Chars.Length, Chars.Length - 1), 0);
        c += Chars[ip];
    }

    ErrorMessage = errorMessage;
    // The following line is where i used the unique part of the name
    //   that was generated above.
    ValidationType = "requiredif"+c;
    ValidationParameters.Add("reqval", reqVal);
    ValidationParameters.Add("others", otherProperties);
    ValidationParameters.Add("values", otherValues);
}

}

我希望这会有所帮助。