Asp.net mvc 2 asp.net mvc3中嵌套类型的数据验证

Asp.net mvc 2 asp.net mvc3中嵌套类型的数据验证,asp.net-mvc-2,validation,data-annotations,Asp.net Mvc 2,Validation,Data Annotations,我有以下型号 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 g

我有以下型号

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; }
}

公共类RoleDetailsModel
{
公共RoleViewModel RoleViewModel{get;set;}
公共IList角色资源{get;set;}
}
在这里,当我在创建角色时使用
RoleViewModel
时,所有验证都按预期执行。但是,当我使用
RoleDetailsModel
(用于编辑)时,不会执行任何验证

从这里看来,对于嵌套类型,验证是而不是执行的。请让我知道我的理解是否正确

如果是这种情况,我如何实施上述情况?简单的方法是在
RoleDetailsModel
中添加相同的验证。但这将违反干(不要重复自己)

更新:实际上我错过了控制器中的
ModelState.IsValid
代码。我已经添加了这一点,现在它在服务器端运行良好


感谢您澄清我对嵌套类型部分的理解。

不,您的理解不正确。对嵌套类型执行验证。显示用于RoleDetailsModel编辑的控制器和视图代码,也许我们可以帮助您更好地进行编辑。否,您的理解不正确。对嵌套类型执行验证。显示用于RoleDetailsModel编辑的控制器和视图代码,也许我们可以更好地帮助您
public class RoleDetailsModel
{
    public RoleViewModel RoleViewModel { get; set; }

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