【发布时间】:2014-05-07 12:57:39
【问题描述】:
我有一个 Razor 辅助函数,它创建了一个可重复使用的 HTML 面板,让我无需一遍又一遍地编写相同的 HTML。
@helper DefaultPanel(string panelTitle) {
<div class="panel">
<div class="panel-logo"><img src="/logo.png"></div>
<div class=panel-inner">
<p class="panel-title">@panelTitle</p>
<div class="panel-content">
/* Can I pass content to be rendered in here here? */
</div>
</div>
</div>
</div>
}
我想知道,是否可以重新使用这个帮助程序来用更多的 HTML 填充 .panel-content 以允许进一步的灵活性和代码重用 - 类似于类似于以下内容:
@LayoutHelpers.DefaultPanel("Welcome back") {
<div class="panel-content-inner">
<p>Welcome back, please select from the following options</p>
<a href="#">Profile</a>
<a href="#">My Defails</a>
</div>
}
在使用 .NET MVC 时,我注意到 Html.BeginForm() 在将代码包装在 @using 声明中的 Html.BeginForm 声明中时会执行类似的操作,如下所示:
@using (Html.BeginForm("Index", "Login", FormMethod.Post))
{
<div>This content gets rendered within the <form></form> markup.</div>
}
但是这可以使用@helper 方法完成吗?如果没有,是否可以创建一个 HtmlHelper 扩展来像 Html.BeginForm() 方法一样做类似的事情?
您可以使用@section 语法做一个非常相似的事情,如here 所示
这似乎真的很有用,但奇怪的是,在组件级别上没有简单的方法来做到这一点。
【问题讨论】:
标签: asp.net asp.net-mvc razor