我有两个模型类,如下所示,
如果嵌套,我想为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; }
}
答案 0 :(得分: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
。