不引人注目的客户端验证规则中的验证类型名称必须包含

时间:2015-06-11 11:27:24

标签: asp.net-mvc validation asp.net-mvc-5 unobtrusive-validation

我在MVC 5网站上遇到以下问题。

  

不显眼的客户端验证规则中的验证类型名称必须   仅由小写字母组成。名称无效:“requiredif4”,客户端   规则类型:RequiredIfValidationRule

这个错误是否意味着我只能在名称中使用字符a-z而不是其他内容。

此错误不会始终发生。页面渲染一段时间后很好,然后突然发生此错误。当我回收我的应用程序池时,错误会消失几个小时。

关于可能出现什么问题的任何想法?

1 个答案:

答案 0 :(得分:0)

我终于设法解决了这个问题。

以下是完整的解决方案。简而言之,如果您有多次访问的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];
}

此致