当使用ViewData.ModelMetadata.Properties进行通用编辑视图时,如何首先呈现视图模型的基类的属性

时间:2010-05-05 09:01:04

标签: asp.net-mvc c#-4.0

当我使用ViewData.ModelMetadata.Properties来循环属性(使用额外的Where(modelMetadata => modelMetadata.ShowForEdit && !ViewData.TemplateInfo.Visited(modelMetadata))),从而创建一个通用的编辑视图时,视图模型的基类的属性最后呈现。< / p>

是否可以使用聪明的OrderBy()或者是否有另一种方法来首先获取基类的属性,然后是子类'?

Reverse不会这样做,因为每个类的属性的排序都很好。

解决方法当然是组合+授权,但由于我们没有mixins,所以它太干恕恕我直言,为什么我寻求更好的解决方案。

2 个答案:

答案 0 :(得分:0)

查看ViewData.ModelMetadata.Properties我看不到任何显示属性是否属于Model类或其超类的信息。

一种方法是将属性放在超类的属性上。如果这是一个属性“DisplayMeAtTheTop”,它也可以被其他属性使用,必须在顶部。

答案 1 :(得分:0)

我选择了另一种不使用继承的解决方案。

案件是;基于类型,只有属性的子集应该是可编辑的。

我通过为每种类型定义一组属性lambda表达式来解决它。