如何使用Entity Framework和ASP.Net Mvc 2使用多个DisplayName属性

时间:2010-03-22 00:07:18

标签: entity-framework asp.net-mvc-2

根据我使用Class的位置,我希望能够显示不同的DisplayName 我有以下课程:

[MetadataType(typeof(PortalMetaData))]
[System.Web.Mvc.Bind(Exclude = "PortalId")] 
public partial class Portal
{
    public Portal()
    {
      this.Created = DateTime.Now;
    }
}
public class PortalMetaData
{
    [Required(ErrorMessage = "Portal name is required")]
    [StringLength(50, ErrorMessage = "Portal name must be under 50 characters")]
    public object PortalName { get; set; }

    [Required(ErrorMessage = "Description is required")]
    public object Description { get; set; }
}

我在数据库门户中有相应的表

我使用带有PortalController的Portal表来为站点管理员更新门户表中的记录。

我希望具有不同角色(AsstAdmin)的其他用户也能够更新此表 为了方便我,我正在考虑创建一个单独的部分类,以某种方式链接回Portal模型。这将允许我显示AsstAdmin更新的有限字段,我也可以为字段显示不同的名称。

如何完成此任务? 如果我添加以下继承自Portal的类,则会得到异常:

  

无法投射类型的对象   输入'Project1.Mvc.Models.Portal'   'Prpject1.Mvc.Models.Site'。

[MetadataType(typeof(SiteMetaData))]
public class Site : Portal
{
    public Site() {  }        
}

public class SiteMetaData
{
   [Required(DisplayName = "Site Description")]
   public object Description { get; set; }
}

1 个答案:

答案 0 :(得分:1)

您可以创建两个不同的视图模型,这些模型只包含每种类型的用户都可以看到的字段。保存时,您将需要一个服务来执行适当的映射回Portal实体。