1

我有很多型号说:A1、A2、A3 和 A4。

这些模型中的每一个都会有视图(如 List 或 Create 、 Edit 等。)

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

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

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

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

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

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

4

2 回答 2

2

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

@Html.EditorForModel您可以简单地使用或渲染整个模型@Html.DisplayForModel

您可以在此处阅读有关其工作原理的信息:

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

于 2013-06-24T06:31:54.943 回答
0

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

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

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

于 2013-06-24T05:16:29.200 回答