title: String MinLength and MaxLength validation don't work (asp.net mvc)
body: <p>I have this class</p>
  
  <pre><code>using System.ComponentModel.DataAnnotations;
  using Argussoft.BI.DAL.Domain.Users;
  
  namespace Argussoft.BI.DAL.DTOs.UserDTOs
  {
      public class CreateUserDto
      {
          [Required(ErrorMessage = "Введите логин")]
          [MaxLength(User.EmailLength, ErrorMessage = "Максимальная длина логина 40 символов")]
          [RegularExpression(User.NameRegularExpression, ErrorMessage = "Логин может содержать только латинские символы, дефисы, подчеркивания, точки")]
          public string Name { get; set; }
  
          [Required(ErrorMessage = "Введите Email")]
          [MaxLength(User.EmailLength, ErrorMessage = "Максимальная длина адреса электронной почты 100 символов")]
          [RegularExpression(User.EmailRegularExpression, ErrorMessage = "Введите корректный адрес электронной почты")]
          public virtual string Email { get; set; }
  
          [Required(ErrorMessage = "Введите имя пользователя")]
          [MaxLength(User.FullNameLength, ErrorMessage = "Максимальная длина имени пользователя 100 символов")]
          [RegularExpression(User.NameRegularExpression, ErrorMessage = "Имя пользователя может содержать только латинские символы, дефисы, подчеркивания, точки")]
          public virtual string FullName { get; set; }
  
          public virtual int Role { get; set; }
  
          [RegularExpression(User.PhoneRegularExpression, ErrorMessage = "Введите корректный номер телефона")]
          public virtual string Phone { get; set; }
  
          public virtual int Status { get; set; }
  
          [Required(ErrorMessage = "Введите пароль")]
          [MinLength(User.PasswordMinLength, ErrorMessage = "Минимальная длина пароля 5 символов")]
          [MaxLength(User.PasswordMaxLength, ErrorMessage = "Максимальная длина пароля 20 символов")]
          [RegularExpression(User.PasswordRegularExpression, ErrorMessage = "Пароль может содержать только латинские символы, дефисы, подчеркивания, точки")]
          public virtual string Password { get; set; }
      }
  }
  </code></pre>
  
  <p>and this form   </p>
  
  <pre><code>@model Argussoft.BI.DAL.DTOs.UserDTOs.CreateUserDto
  
  @using (Ajax.BeginForm("CreateUser", "User", new AjaxOptions { OnSuccess = "onSuccessCreateUser" }, new { id = "dialog_form", @class = "form-horizontal" }))
  {
      &lt;div class="modal-header"&gt;
          &lt;button type="button" class="close" data-dismiss="modal" aria-hidden="true"&gt;&amp;times;&lt;/button&gt;
          &lt;h4&gt;Добавить пользователя&lt;/h4&gt;
      &lt;/div&gt;
      &lt;div class="modal-body"&gt;
  
          &lt;!-- Name --&gt;
          &lt;div class="control-group"&gt;
              &lt;label class="control-label" for="@Html.NameFor(model =&gt; model.Name)"&gt;Логин&lt;/label&gt;
              &lt;div class="controls"&gt;
                  &lt;div class="input-prepend"&gt;
                      @Html.TextBoxFor(model =&gt; model.Name, new { @class = "span3", id = "input_name" })
                      &lt;br /&gt;
                      @Html.ValidationMessageFor(model =&gt; model.Name)
                  &lt;/div&gt;
              &lt;/div&gt;
          &lt;/div&gt;
  
          &lt;!-- Email --&gt;
          &lt;div class="control-group"&gt;
              &lt;label class="control-label" for="@Html.NameFor(model =&gt; model.Email)"&gt;Email&lt;/label&gt;
              &lt;div class="controls"&gt;
                  &lt;div class="input-prepend"&gt;
                      @Html.TextBoxFor(model =&gt; model.Email, new { @class = "span3", id = "input_email" })
                      &lt;br /&gt;
                      @Html.ValidationMessageFor(model =&gt; model.Email)
                  &lt;/div&gt;
              &lt;/div&gt;
          &lt;/div&gt;
  
          &lt;!-- FullName --&gt;
          &lt;div class="control-group"&gt;
              &lt;label class="control-label" for="@Html.NameFor(model =&gt; model.FullName)"&gt;Имя пользователя&lt;/label&gt;
              &lt;div class="controls"&gt;
                  &lt;div class="input-prepend"&gt;
                      @Html.TextBoxFor(model =&gt; model.FullName, new { @class = "span3", id = "input_full_name" })
                      &lt;br /&gt;
                      @Html.ValidationMessageFor(model =&gt; model.FullName)
                  &lt;/div&gt;
              &lt;/div&gt;
          &lt;/div&gt;
  
          &lt;!-- Role --&gt;
          &lt;div class="control-group"&gt;
              &lt;label class="control-label" for="@Html.NameFor(model =&gt; model.Role)"&gt;Роль пользователя&lt;/label&gt;
              &lt;div class="controls"&gt;
                  &lt;div class="input-prepend"&gt;
                      @Html.DropDownList("Role", (SelectList)ViewBag.Roles,new{id ="input_role"})
                      &lt;br /&gt;
                      @Html.ValidationMessageFor(model =&gt; model.Role)
                  &lt;/div&gt;
              &lt;/div&gt;
          &lt;/div&gt;
  
          &lt;!-- Phone --&gt;
          &lt;div class="control-group"&gt;
              &lt;label class="control-label" for="@Html.NameFor(model =&gt; model.Phone)"&gt;Контактный телефон&lt;/label&gt;
              &lt;div class="controls"&gt;
                  &lt;div class="input-prepend"&gt;
                      @Html.TextBoxFor(model =&gt; model.Phone, new { @class = "span3", id = "input_phone" })
                      &lt;br /&gt;
                      @Html.ValidationMessageFor(model =&gt; model.Phone)
                  &lt;/div&gt;
              &lt;/div&gt;
          &lt;/div&gt;
  
          &lt;!-- Status --&gt;
          &lt;div class="control-group"&gt;
              &lt;label class="control-label" for="@Html.NameFor(model =&gt; model.Status)"&gt;Статус пользователя&lt;/label&gt;
              &lt;div class="controls"&gt;
                  &lt;div class="input-prepend"&gt;
                      @Html.DropDownList("Status", (SelectList)ViewBag.UserStatuses,new{id ="input_status"})
                      &lt;br /&gt;
                      @Html.ValidationMessageFor(model =&gt; model.Status)
                  &lt;/div&gt;
              &lt;/div&gt;
          &lt;/div&gt;
  
          &lt;!-- Password --&gt;
          &lt;div class="control-group"&gt;
              &lt;label class="control-label" for="@Html.NameFor(model =&gt; model.Password)"&gt;Пароль пользователя&lt;/label&gt;
              &lt;div class="controls"&gt;
                  &lt;div class="input-prepend"&gt;
                      @Html.TextBoxFor(model =&gt; model.Password, new { @class = "span3", id = "input_password" })
                      &lt;br /&gt;
                      @Html.ValidationMessageFor(model =&gt; model.Password)
                  &lt;/div&gt;
              &lt;/div&gt;
          &lt;/div&gt;
  
      &lt;/div&gt;
      &lt;div class="modal-footer"&gt;
          &lt;a href="@Url.Action("UserIndex", "User")" class="btn"&gt;Отменить&lt;/a&gt;
          &lt;button type="submit" id="save_button" class="btn btn-primary"&gt;Сохранить&lt;/button&gt;
      &lt;/div&gt;
  }
  </code></pre>
  
  <p>User class:</p>
  
  <pre><code>public class User : BaseEntity 
  { 
      public const int NameLength = 40; 
      public const int PasswordMinLength = 5; 
      public const int PasswordMaxLength = 20; 
      public const int FullNameLength = 100; 
      public const int EmailLength = 100; 
      public const int PhoneLength = 40; //...
  }
  </code></pre>
  
  <p>but my validation works only for <code>Required</code> and <code>RegularExpression</code> and doesn't work for <code>MinLength</code> and <code>MaxLength</code> and I don't get any error message in this case.  </p>
  
  <p>What can be a reason?</p>