从model + MVC4动态创建视图

时间:2013-06-24 05:01:36

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

我有多少型号说:A1,A2 A3& A4。

每个模型都会有视图(例如List或Create,Edit等。)

但是我的视图中不应该包含任何静态html,我必须使用一些Html Helper方法来渲染html。

我可能应该在RenderHelper.cs中编写一个方法,如下所示

public static MvcHtmlString RenderContent(this HtmlHelper helper, IEnumerable<FatRoute> model)
    {
    }

另外,我必须检查模型中的列类型,以根据其类型呈现文本框或下拉列表或日期时间。

这里的问题是,列是diff foreach模型(显然),我不能使用diff代码块来检查每个模型的列类型。 如果我说项目。 (在这里我得到了项目中的列)在foreach bolck中,我只得到传递模型的列。但它应该是处理所有模型的一些通用方法。

有人可以建议如何实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

MVC已经或多或少提供了一种方法。它们被称为显示/编辑器模板。他们已经使用反射来动态渲染模型。如果您不喜欢他们默认使用它的方式,您只需将其替换为您自己的自定义对象模板。

您只需使用@Html.EditorForModel@Html.DisplayForModel

即可呈现整个模型

你可以在这里阅读这是如何工作的:

http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html

答案 1 :(得分:0)

由于您决定使用自定义帮助程序,因此一种方法是使用 reflection 来遍历模型的属性并使用该知识来构建视图。

这样,您可以在模型的属性上使用属性注释(数据注释)等功能,例如DisplayNameAttribute,以向视图生成器提供其他数据。

使用这种方法,您将定位模型上定义的每种类型的属性(列),而不是模型本身。