2012-04-04 153 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