提问人:zynaps 提问时间:3/24/2011 最后编辑:zynaps 更新时间:10/7/2015 访问量:3257
MVC3 DataAnnotationsExtensions 错误使用数值属性
MVC3 DataAnnotationsExtensions error using numeric attribute
问:
我已经安装了 Scott 的 Kirkland DataAnnotationsExtensions。
在我的模型中,我有:
[Numeric]
public double expectedcost { get; set; }
在我看来:
@Html.EditorFor(model => model.expectedcost)
现在,当页面尝试呈现时,我收到以下错误:
不显眼的验证类型名称 客户端验证规则必须是 独特。以下验证类型 被看过不止一次:数字
任何想法为什么我得到错误?
答:
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);
}
}
我希望这会有所帮助。
评论