2012-04-04 4 views
2

У меня есть две модели класса, как показано ниже,Отображаемого названия вложенного сложного типа

я хочу использовать различные метки для Categoy.Name свойства, если его вложенный, но если я использую сложный тип, оно не связывается с именем собственности, есть ли какие-либо варианты, например BindTo («Категория.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

+0

Вы хотите сказать, что это не работает? –

+0

нет, это работает, но не полезно для меня, ему нужно гораздо больше кода – tobias

Смежные вопросы