显示嵌套复杂类型的名称

时间:2012-04-04 09:52:00

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

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

如果嵌套,我想为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; }
    }

1 个答案:

答案 0 :(得分: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