我有以下模特。
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
中添加相同的验证。但这会违反DRY(不要重复自己)。
更新:实际上我错过了控制器中的ModelState.IsValid
代码。我已添加,现在它在服务器端工作正常。
感谢您清除我对嵌套类型部分的理解。