我有一个Razor助手函数,它可以创建一个可重用的HTML面板,省go 了我一遍又一遍地编写相同的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
,以允许进一步的灵活性和代码重用——similar到下面这样的内容:
@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()
在Html.BeginForm
声明的@using
语句中包装代码时做了类似的事情,比如:
@using (Html.BeginForm("Index", "Login", FormMethod.Post))
{
<div>This content gets rendered within the <form></form> markup.</div>
}
但是,使用@helper
种方法能做到这一点吗?如果不是,是否可以创建一个HtmlHelper
扩展来做与Html.BeginForm()
方法类似的事情呢?
您可以使用@section
语法做一件非常类似的事情,如图here所示
这似乎是一件非常有用的事情,而且奇怪的是,在组件级别上没有简单的方法可以做到这一点.