Ошибка MVC3 DataAnnotationsExtensions с использованием числового атрибута - PullRequest
4 голосов
/ 24 марта 2011

Я установил расширения Скотта для Kirkland DataAnnotationsExtensions.

В моей модели у меня есть:

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

А на мой взгляд:

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

Теперь, когда страница пытается отобразиться, я получаю следующую ошибку:

Проверка типов имен в ненавязчивом правила проверки клиента должны быть уникальный. Следующий тип проверки был замечен не раз: номер

Есть идеи, почему я получаю ошибку?

Ответы [ 2 ]

15 голосов
/ 24 марта 2011

Быстрый ответ - просто удалите атрибут

[Numeric]

Более длинное объяснение состоит в том, что согласно проекту проверка уже добавляет data-val-number , поскольку он имеет тип двойной .Добавляя Числовой , вы дублируете проверку.

это работает:

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

, потому что переменная имеет тип string и выдобавление атрибута Числовой .

Надеюсь, это поможет

0 голосов
/ 06 октября 2015

У меня в основном была та же проблема, и мне удалось решить ее с помощью следующего фрагмента кода: (Как здесь ответили: 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);
}

}

1012 * *1011* Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...