C# 如何在Razor视图中呈现匿名模型?

C# 如何在Razor视图中呈现匿名模型?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我使用anonymous类的主要目的是将包含主模型之外的各种值的数据传递给视图,而无需创建单独的viewmodel 我发现自己对LINQ和ExpandoObject非常满意。但是,由于我用@model IEnumerable标记了视图,因此我无法再使用Html Helper,因为它的方法应该解析为扩展方法,这是不允许的,并且应该引发运行时异常 @Html.Display("Property") 问题是,我有一些属性需要呈现为文本框等进行编辑,因此我几乎必须使用像EditorFor()这样的Ht

我使用anonymous类的主要目的是将包含主模型之外的各种值的数据传递给视图,而无需创建单独的viewmodel

我发现自己对LINQ和ExpandoObject非常满意。但是,由于我用@model IEnumerable标记了视图,因此我无法再使用Html Helper,因为它的方法应该解析为扩展方法,这是不允许的,并且应该引发运行时异常

@Html.Display("Property")
问题是,我有一些属性需要呈现为文本框等进行编辑,因此我几乎必须使用像EditorFor()这样的Html辅助方法。因此,我想我还是回到强类型模型吧


然而,我真的不想让无数的“临时”视图模型把我的项目搞得一团糟,它们只是现有模型的混合体。那么有什么办法可以做到这一点呢?我想知道是否有比复合类更好的解决方案。

您可以使用
System.Reflection
获取类的
属性
名称。例如:
typeof(object).GetProperties

听起来像是要使用
ViewData
而不是匿名模型。我不知道你想做什么。我不知道,因为你不能在表达式中绑定动态对象属性(“错误CS1963:表达式树可能不包含动态操作”),我建议你只创建一组自定义ViewModels,使用公共片段尽可能保持干燥。另外,通过自定义视图模型,您可以在编译时检查视图的语法错误