我安装了Scott的Kirkland DataAnnotationsExtensions。
在我的模特中,我有:
[Numeric]
public double expectedcost { get; set; }
在我的观点中:
@Html.EditorFor(model => model.expectedcost)
现在,当页面尝试渲染时,我收到以下错误:
验证类型名称不引人注目 客户端验证规则必须是 独特。以下验证类型 不止一次见过:数字
为什么我收到错误的任何想法?
答案 0 :(得分:15)
快速回答就是删除属性
[Numeric]
更长的解释是,根据设计,验证已经添加了 data-val-number ,因为它的类型为 double 。通过添加 Numeric ,您将复制验证。
这有效:
[Numeric]
public string expectedcost { get; set; }
因为变量的类型为 string ,并且您要添加 Numeric 属性。
希望这有帮助
答案 1 :(得分:0)
我基本上遇到了同样的问题,我设法用以下代码解决了这个问题:(在这里回答:ASP.NET MVC - "Validation type names must be unique.")
使用System; 使用System.Web.Mvc; 还有ValidationRule:
public class RequiredIfValidationRule:ModelClientValidationRule { 私有const字符串Chars =" abcdefghijklmnopqrstuvwxyz&#34 ;;
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);
}
}
我希望这会有所帮助。