【问题标题】:Validation type names in unobtrusive client validation rules must consist不显眼的客户端验证规则中的验证类型名称必须包含
【发布时间】:2015-06-11 11:27:23
【问题描述】:
我在 MVC 5 网站上遇到以下问题。
不显眼的客户端验证规则中的验证类型名称必须
仅由小写字母组成。无效名称:“requiredif4”,客户端
规则类型:RequiredIfValidationRule
这个错误是否意味着我只能在名称中使用字符 a-z 而不能使用其他字符。
此错误并非总是发生。页面在一段时间内呈现良好,然后突然开始出现此错误。然后,当我回收我的应用程序池时,错误会消失几个小时。
关于可能是什么问题的任何想法?
【问题讨论】:
标签:
asp.net-mvc
validation
asp.net-mvc-5
unobtrusive-validation
【解决方案1】:
我终于设法解决了这个问题。
以下是完整的解决方案。简而言之,如果您有一个 ValidationRule 将被访问多次(在我的情况下为数百次),您需要确保只要 IIS 会话处于活动状态,该名称就保持唯一。在我的情况下是 24 小时。
以下代码在客户端为 ValidationRule 生成一个唯一名称。
修复问题的代码如下:
const string Chars = "abcdefghijklmnopqrstuvwxyz";
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];
}
问候