使用视图模型属性重用DisplayAttributes

时间:2013-03-18 21:00:48

标签: asp.net-mvc viewmodel data-annotations asp.net-mvc-viewmodel

有没有办法在视图模型中使用实体的DisplayAttribute值?

public partial class Catalog
{
  [Display(ResourceType = typeof(Resources), Name = "ID")]
  public string ID { get; set; }

  [Display(ResourceType = typeof(Resources), Name = "CatalogName")]
  public string CatalogName { get; set; }
}

public class CatalogViewModel
{
  private readonly Catalog _catalog;

  // I want reuse Catalog.CatalogName's display values.
  public String CatalogName
  {
    get { return _catalog.CatalogName; }
  }
}

我无法从视图模型访问资源。

1 个答案:

答案 0 :(得分:0)

通常,您不会像在此处一样使用视图模型中的域对象。 解释为什么这不是一个好的做法(尽管功能上它会起作用)是here。 你需要做的是从字符串和整数(基元)定义你的视图模型 并使用AutoMapper之类的东西在它们之间进行映射。在现实生活中的网站中,您很少将域模型一对一地映射到视图模型,通常视图模型是针对承载来自多个表的所有必需信息的特定视图而定制的。

回到你的问题:根据我刚才描述的最佳实践定义视图模型,你当然可以(并且应该)定义所有注释和验证(使用fluent validationdata annotation

希望这有帮助,如果没有,请告诉我。