2012-04-04 184 views
2

显示名称我有两个模型类像下面,嵌套复杂类型

我想如果嵌套使用不同的标签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

一个解决方案是使用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

+0

它对我没有效果,但是感谢您的帮助 – tobias 2012-04-04 17:39:37

+0

您的意思是它不起作用? – 2012-04-04 18:24:59

+0

不,它的工作原理,但不是有用的,它需要更多的代码 – tobias 2012-04-04 20:32:46