2012-04-04 12 views
2

ich habe zwei Modellklassen wie unten,Anzeigename für verschachtelten komplexen Typen

i verschiedene Etiketten für Categoy.Name Eigenschaft, wenn seine verschachtelten verwenden mag, aber wenn ich komplexen Typen verwenden, tut es auf Eigenschaft namen binden, Gibt es irgendwelche Optionen wie BindTo ("Category.Name") für komplexe Typen ???

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; } 
    } 

Antwort

1

Eine Lösung ist das MetadataType Attribut zu verwenden.

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; } 
} 

Wenn Sie CategoryModel der Anzeigename verwenden Name sein. Wenn Sie CategoryPropertyModel verwenden, wird der Anzeigename Category Name sein.

+0

es ist nicht effektiv für mich, aber danke für die Hilfe – tobias

+0

Meinst du es funktioniert nicht? –

+0

nein, es funktioniert, aber nicht nützlich für mich, es braucht viel mehr Code – tobias

Verwandte Themen