在一个位置定义数据注释属性,但在多个视图模型中使用

时间:2013-06-20 13:36:12

标签: asp.net-mvc validation

我有多个相关的ViewModel:

  • ChangePasswordViewModel
  • ResetPasswordViewModel
  • RegisterViewModel

每个都包含密码属性的多个注释属性。

我希望能够只定义一次这些属性。

我尝试使用MetadataType属性将每个ViewModel与包含所有关联属性的类相关联,但由于这包含可能不在单个View Models中的属性,因此收到错误消息。

1 个答案:

答案 0 :(得分:1)

使用继承:

public class BasePasswordViewModel
{
     [Required]
     public string Password { get; set; }
     [Required]
     public string ConfirmPassword { get; set; }
}

public class ChangePasswordViewModel: BasePasswordViewModel { //... }

public class ResetPasswordViewModel : BasePasswordViewModel { //... }

public class RegisterViewModel: BasePasswordViewModel { //... }

您的所有“共享”媒体资源都可以放在BasePasswordViewModel中,任何特定于ChangePasswordViewModelResetPasswordViewModelRegisterViewModel的内容都可以进入。