MVC Razor中的重复布局

时间:2012-09-04 13:55:34

标签: asp.net-mvc razor

是否可以使用MVC机制来创建可重复的布局? 例如: 我们在整个节目中都有HTML片段,必须具有相同的元素和属性,但可以有单独的内容(内容也可以是一堆HTML)。

我倾向于HTML助手,但这似乎不允许这样的事情:

@Html.Business(Name, Attr2)
{
    <em>Do Not Contact</em>
    <p>Arbitrary text</p>
}
@Html.Business(Name, Attr2)
{
    <table>...</table>
}

这里的关键点是嵌入式HTML是任意的,并且Helper方法没有可用的参数。

谢谢, 雅克

1 个答案:

答案 0 :(得分:0)

您正在混淆布局和模板。布局是一个基础框架,用作所有视图的公共容器。模板(您应该查找的内容)是一种显示特定(通常是特定)数据类型的方式。

实施模板有两种基本方法。


第一个是将其定义为默认模板。这是通过简单的命名约定完成的。只需确保您的.cshtml文件与您的实体类名称具有相同的名称并将其放入:

  

/Views/Shared/DisplayTemplates/.cshtml

之后,只要您想使用模板显示实体,请使用@Html.DisplayFor()帮助程序,相应地提供您的对象。

或者,如果您希望以不同方式调用模板或者不希望在每种情况下都使用模板,则可以使用实体上的[UIHint("TemplateName")]属性指定模板名称,或者传递模板名称你的DisplayFor()。


第二种方法是使用部分视图。您可以创建显示数据的部分视图,并使用@Html.RenderPartial("TemplateName", object)


在这两种情况下,可以使用VS界面轻松创建模板/部分视图:

  • 右键单击要在其中创建模板的DisplayTemplate(或其他位置)文件夹,然后单击Add>View...
  • 输入名称,查看Create a strongly-typed view
  • 选择合适的对象(如果你找不到它,你可以在之后手动完成,但我建议至少选择一些东西来简化工作)。
  • 选择Details作为脚手架模板
  • 检查Create as partial view
  • 取消选中Use a layout or master page

确保@model <Entity Name>与您要传递的对象相匹配,然后对您希望如何显示进行任何修改。

享受!

- 的修改 -

注意:再次阅读你的帖子后,我意识到这可能不是你所要求的,但目前还不清楚。您能否详细解释一下您想要实现的目标,而不是如何您正在努力实现这一目标?

您编写的代码段并没有多大意义。