是否可以使用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方法没有可用的参数。
谢谢, 雅克
答案 0 :(得分:0)
您正在混淆布局和模板。布局是一个基础框架,用作所有视图的公共容器。模板(您应该查找的内容)是一种显示特定(通常是特定)数据类型的方式。
实施模板有两种基本方法。
第一个是将其定义为默认模板。这是通过简单的命名约定完成的。只需确保您的.cshtml文件与您的实体类名称具有相同的名称并将其放入:
/Views/Shared/DisplayTemplates/.cshtml
之后,只要您想使用模板显示实体,请使用@Html.DisplayFor()
帮助程序,相应地提供您的对象。
或者,如果您希望以不同方式调用模板或者不希望在每种情况下都使用模板,则可以使用实体上的[UIHint("TemplateName")]
属性指定模板名称,或者传递模板名称你的DisplayFor()。
第二种方法是使用部分视图。您可以创建显示数据的部分视图,并使用@Html.RenderPartial("TemplateName", object)
在这两种情况下,可以使用VS界面轻松创建模板/部分视图:
Add>View...
Create a strongly-typed view
Details
作为脚手架模板Create as partial view
框Use a layout or master page
确保@model <Entity Name>
与您要传递的对象相匹配,然后对您希望如何显示进行任何修改。
享受!
- 的修改 -
注意:再次阅读你的帖子后,我意识到这可能不是你所要求的,但目前还不清楚。您能否详细解释一下您想要实现的目标,而不是如何您正在努力实现这一目标?
您编写的代码段并没有多大意义。