Проверка данных на вложенные типы в asp.net mvc3 - PullRequest
2 голосов
/ 05 апреля 2011

У меня есть следующие модели.

public class RoleViewModel
{
    [DisplayName("Role Name")]
    [Required(ErrorMessage="Role Name is required.")]
    [WhiteSpaceAttribute(ErrorMessage="Name cannot contain white space")]
    [StringLength(25, ErrorMessage="Name cannot be be greater than 25 characters")]
    public string RoleName { get; set; }


    [StringLength(100, ErrorMessage = "Description should be less than 100 characters.")]
    public string Description { get; set; }

    [DefaultValue("")]
    public string DisplayMessage { get; set; }


    public bool IsSuccess { get; set; }
}

и

public class RoleDetailsModel
{
    public RoleViewModel RoleViewModel { get; set; }

    public IList<RoleResourceModel> RoleResources { get; set; }
}

Здесь, когда я использую RoleViewModel при создании роли, все проверки выполняются, как и ожидалось. Однако, когда я использую RoleDetailsModel (для редактирования), ни одна из проверок не выполняется.

Отсюда кажется, что проверки не выполняются для вложенных типов. Пожалуйста, дайте мне знать, если мое понимание верно.

Если это так, как мне реализовать описанный выше случай? Простой способ - добавить такую ​​же проверку в RoleDetailsModel. Но это нарушит СУХОЙ (не повторяйте себя).

ОБНОВЛЕНИЕ: На самом деле я пропустил код ModelState.IsValid в контроллере. Я добавил это, и теперь он отлично работает на стороне сервера.

Спасибо за разъяснение моего понимания в части вложенных типов.

...