覆盖继承模型中的数据注释属性

时间:2014-03-17 12:26:12

标签: c# asp.net asp.net-mvc validation data-annotations

我正在构建mvc 5 Web应用程序,并使用以下模型进行验证:

public abstract class AccountModel
{
    public abstract string Password { get; set; }
}

public class EditAccountModel : AccountModel
{
    [DataType(DataType.Password)]
    [Display(ResourceType = typeof(UsersResources), Name = "Password")]
    public override string Password { get; set; }
}

public class RegisterAccountModel : AccountModel
{
    [DataType(DataType.Password)]
    [Required]
    [Display(ResourceType = typeof(UsersResources), Name = "Password")]
    public override string Password { get; set; }
}

我想让基类在同一个编辑表单中使用它,如下所示:     @model WebApplication.AccountModel

<div class="form-group">
    @Html.LabelFor(x => x.Password)
    @Html.PasswordFor(x => x.Password)
</div>

但具有不同的验证规则。目前没有客户端验证工作,因为模型类型为AccountModel。是否可以在继承的模型上添加属性并支持asp.net mvc 5的客户端和服务器端验证?

1 个答案:

答案 0 :(得分:0)

根据您的描述,帐户模型没有数据注释,您在视图中使用它。

您是否尝试过将您的视图改为RegisterAccountModel?

听起来你正试图从你的代码中重用,但也许你在这里尝试有点太难了。也许注册和账户管理不一样 - 也许在注册时你最终会添加一个“验证码”功能,或者“你听说过我们的地方”等等......