当我使用ViewData.ModelMetadata.Properties
来循环属性(使用额外的Where(modelMetadata => modelMetadata.ShowForEdit && !ViewData.TemplateInfo.Visited(modelMetadata))
),从而创建一个通用的编辑视图时,视图模型的基类的属性最后呈现。< / p>
是否可以使用聪明的OrderBy()或者是否有另一种方法来首先获取基类的属性,然后是子类'?
Reverse
不会这样做,因为每个类的属性的排序都很好。
解决方法当然是组合+授权,但由于我们没有mixins,所以它太干恕恕我直言,为什么我寻求更好的解决方案。
答案 0 :(得分:0)
查看ViewData.ModelMetadata.Properties我看不到任何显示属性是否属于Model类或其超类的信息。
一种方法是将属性放在超类的属性上。如果这是一个属性“DisplayMeAtTheTop”,它也可以被其他属性使用,必须在顶部。
答案 1 :(得分:0)
我选择了另一种不使用继承的解决方案。
案件是;基于类型,只有属性的子集应该是可编辑的。
我通过为每种类型定义一组属性lambda表达式来解决它。