【发布时间】:2015-09-28 21:08:45
【问题描述】:
使用 MVC Razor 我们如何在视图中引用 HTML 标记元素作为模板(可以作为字符串或对象传递给帮助程序)?
所需功能的示例(或类似的,我更喜欢标准化方法,但我一直找不到):
@TemplateOne {
<!--Standard Razor markup:-->
<div>
<p>@Model.Summary</p>
<table>
<tr>
<td>Lorem ispum...</td>
</tr>
</table>
</div>
}
ID 参考:
@{
var templateToPassToHelper = TemplateOne;
}
我知道上述代码的语法不正确,因为它不适用于我的本地测试。我最接近完成此任务的是使用以下内容(它不能回答问题或解决问题,因为变量只是一个字符串,并且使用这种方法使开发人员无法使用 Visual Studio 智能感知和其他 HTML 编辑帮助):
string template =
@"<html>
<head>
<title>Hello @Model.Name</title>
</head>
<body>
Email: @Html.TextBoxFor(m => m.Email)
</body>
</html>";
【问题讨论】:
-
您是否希望创建自己的自定义 html 帮助程序?
-
使用
Html.Partial并在局部视图中显示所有剃刀语法。将标记填充在字符串中,或者使用一些自定义帮助程序完全违背了使用 MVC 的目的 -
@Code 是的,我创建了一个自定义 Html 帮助程序。 @Brent Mannering 即使我要使用
Html.Partial,也会出现同样的问题。使用“模板”的目的是在视图中定义“模板”。目前,我们在解决方案中有 96 个视图,其中大约 30 个已针对此部分进行了大量定制(通过业务规则逻辑)。此部分是HTML(当前在 Helper 中定义)其余部分的一小部分,并且必须是动态的。因此,如果将此部分传递给 Partial,则需要引用和传递该部分(动态模板)。
标签: html asp.net-mvc visual-studio razor razor-declarative-helpers