2

私は以下のような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; }
    }
4

1 に答える 1

1

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

于 2012-04-04T10:04:32.063 に答える