Asp.net mvc 2 DisplayName元数据未显示在视图上

Asp.net mvc 2 DisplayName元数据未显示在视图上,asp.net-mvc-2,attributes,metadata,data-annotations,Asp.net Mvc 2,Attributes,Metadata,Data Annotations,考虑到以下模型,如何在视图上显示正确的DsiplayName model.User.UserPrimaryEmail)%%> model.User.UserPrimaryEmail)%%> model.User.UserPrimaryEmail)%%> 公共类RegisterViewModel { 公共用户{get;set;} } [元数据类型(typeof(UserMetaData))] 公共部分类用户:UserBase { //从生成的类UserBase继承 //在此处为构造函数设置默认

考虑到以下模型,如何在视图上显示正确的DsiplayName


model.User.UserPrimaryEmail)%%>
model.User.UserPrimaryEmail)%%>
model.User.UserPrimaryEmail)%%>
公共类RegisterViewModel
{
公共用户{get;set;}
}
[元数据类型(typeof(UserMetaData))]
公共部分类用户:UserBase
{
//从生成的类UserBase继承
//在此处为构造函数设置默认值
//除非用作元数据源,否则不使用
公共类用户元数据
{
[必需]
[显示名称(“电子邮件登录”)]
[数据类型(数据类型.电子邮件地址)]
[电子邮件(ErrorMessage=“无效电子邮件”)]
公共字符串UserPrimaryEmail{get;set;}
}
}

表单不显示“电子邮件登录”,但您查看的“UserPrimaryEmail”强类型为Project.Models.RegisterViewModel,但是您正在向用户对象添加数据批注

一般来说,你会:

public class RegisterViewModel
{
    [Required]
    [DisplayName("Email Login")]
    [DataType(DataType.EmailAddress)]
    [Email(ErrorMessage = "Invalid Email")]
    public String Email { get; set; }

    .....
    other properties
}

不久前,我的互联网连接速度可能很慢。请标记另一个。不是这样。除了丢弃我的“用户”对象之外,没有其他方法可以做到这一点。不,没有其他方法。这就是ViewModel应该具备的功能。与视图中的数据相匹配的一组属性,充当实体和UI之间的抽象级别。我建议使用AutoMapper之类的工具来简化这一过程。