MVC3 проверка JQuery MinLength фильтр не работает - PullRequest
16 голосов
/ 25 августа 2011

У меня есть это в моем режиме:

[Required(AllowEmptyStrings = false, ErrorMessageResourceType = typeof(Registration), ErrorMessageResourceName = "NameRequired")]
[MinLength(3, ErrorMessageResourceType = typeof(Registration), ErrorMessageResourceName = "NameTooShort")]
public String Name { get; set; }

Это заканчивается:

    <div class="editor-label">
        <label for="Name">Name</label>
    </div>
    <div class="editor-field">
        <input class="text-box single-line" data-val="true" data-val-required="Name is required" id="Name" name="Name" type="text" value="" />
        <span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>
    </div>

Почему MinLength игнорируется компилятором?Как я могу "включить"?

Ответы [ 4 ]

32 голосов
/ 17 апреля 2012

Вместо использования атрибута MinLength используйте это вместо:

[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]

Длина строки MSDN

Преимущество: нет необходимости писать собственный атрибут

9 голосов
/ 18 ноября 2011

Вместо того, чтобы ломать голову над созданием пользовательских атрибутов ... почему бы не использовать регулярное выражение?

// Minimum of 3 characters, unlimited maximum
[RegularExpression(@"^.{3,}$", ErrorMessage = "Not long enough!")]

// No minimum, maximum of 42 characters
[RegularExpression(@"^.{,42}$", ErrorMessage = "Too long!")]

// Minimum of 13 characters, maximum of 37 characters
[RegularExpression(@"^.{13,37}$", ErrorMessage = "Needs to be 13 to 37 characters yo!")]
6 голосов
/ 21 апреля 2014

Последняя версия ASP.Net MVC теперь поддерживает атрибуты MinLength и MaxLength. См. Официальную страницу mvc asp.net: Ненавязчивая проверка для MinLengthAttribute и MaxLengthAttribute

0 голосов
/ 25 августа 2011

Отметьте вопрос .Читая комментарии, кажется, что и длина, и длина не работают.Поэтому они предлагают использовать атрибут StringLength для maxlenght.Я думаю, вы должны написать пользовательский атрибут для min legth

для пользовательского атрибута, вы можете сделать что-то вроде этого

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
public class MyMinLengthAttribute : ValidationAttribute
{
  public int MinValue { get; set; }  

  public override bool IsValid(object value)
  {
    return value != null && value is string && ((string)value).Length >= MinValue;
  }
}

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

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