【问题标题】:Display name for nested complex type嵌套复杂类型的显示名称
【发布时间】:2012-04-04 09:52:00
【问题描述】:

我有两个模型类,如下所示,

我想为 Categoy.Name 属性使用不同的标签,如果它是嵌套的,但是如果我使用复杂类型,它没有绑定到 name 属性,对于复杂类型是否有类似 BindTo("Category.Name") 的选项? ??

  public class ProductModel
    {
        public int Id { get; set; }

        [DisplayName("Product Name")]
        public string Name { get; set; }

        [DisplayName("Category Name")]
        [BindTo("Category.Name")]
        public CategoryModel Category { get; set; }
    }

    public class CategoryModel
    {
        public int Id { get; set; }
        [DisplayName("Name")]
        public string Name { get; set; }
    }

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    一种解决方案是使用MetadataType 属性。

    public class ProductModel
    {
        public int Id { get; set; }
    
        [DisplayName("Product Name")]
        public string Name { get; set; }
    
        public CategoryPropertyModel Category { get; set; }
    }
    
    [MetadataType(typeof(ICategoryModelCategoryDisplay))
    public class CategoryModel : CategoryBaseModel { }
    
    [MetadataType(typeof(ICategoryModelDisplay))
    public class CategoryPropertyModel : CategoryBaseModel { }
    
    public class CategoryBaseModel
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    
    public interface ICategoryModelSimpleDisplay  
    {
        [DisplayName("Name")]
        public string Name { get; set; }
    }
    
    public interface ICategoryModelCategoryDisplay  
    {
        [DisplayName("Category Name")]
        public string Name { get; set; }
    }
    

    当您使用CategoryModel 时,显示名称将为Name

    当您使用CategoryPropertyModel 时,显示名称将为Category Name

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 2020-02-20
      • 1970-01-01
      • 2014-11-24
      相关资源
      最近更新 更多