Asp.net mvc 在使用ViewData.ModelMetadata.properties进行常规编辑视图时,如何首先呈现视图模型基类的属性

Asp.net mvc 在使用ViewData.ModelMetadata.properties进行常规编辑视图时,如何首先呈现视图模型基类的属性,asp.net-mvc,c#-4.0,Asp.net Mvc,C# 4.0,当我使用ViewData.ModelMetadata.Properties以使用额外的WheremodelMetadata=>ModelMetadata.ShowForEdit&&循环属性时!ViewData.TemplateInfo.VisitedmodelMetadata,从而创建一个通用编辑视图,最后呈现视图模型基类的属性 是否可以使用聪明的OrderBy,或者是否有其他方法首先获取基类的属性,然后再获取子类的属性 反向不会起作用,因为每个类的属性的顺序都非常好 解决方法当然是组合+委派,

当我使用ViewData.ModelMetadata.Properties以使用额外的WheremodelMetadata=>ModelMetadata.ShowForEdit&&循环属性时!ViewData.TemplateInfo.VisitedmodelMetadata,从而创建一个通用编辑视图,最后呈现视图模型基类的属性

是否可以使用聪明的OrderBy,或者是否有其他方法首先获取基类的属性,然后再获取子类的属性

反向不会起作用,因为每个类的属性的顺序都非常好


解决方法当然是组合+委派,但由于我们没有混合,这太不简单了,所以如果可能的话,我为什么要寻求更好的解决方案。

查看ViewData.ModelMetadata.Properties,我看不到任何显示属性是模型类的一部分还是其超类的一部分的信息


一种方法是在超类的属性上放置一个属性。如果这是一个属性displaymethetop,那么其他属性也可以使用它,它们必须位于顶部。

我使用了另一个不使用继承的解决方案

情况是,;基于类型,只有属性的子集才应是可编辑的


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

在问我的问题之前,我发现了一篇博客文章,作者在其中创建了Orderint属性以控制排序。我还调查了ModelMetadata的属性,但没有找到任何对OrderBy有用的东西,但希望我忽略了一些东西。我希望找到一个比自定义属性更简单的解决方案,但这至少是解决问题的一种方法。此排序内容应位于默认MetaDataProvider中。这是非常必要的。