@helpers以及部分视图允许很好的可组合性,但是我想知道是否需要注意显着的性能成本。例如:
App_Code文件\ Wrappers.cshtml:
@helper HeaderWrapper(WebViewPage view, Func<object, HelperResult> content,Func<object, HelperResult> navbar = null) {
<div class="container-fluid">
@content(null)
</div>
if (navbar != null) {
<div class="container-fluid">
<nav id="navbar-page" class="navbar-default navbar-collapse collapse" role="navigation">
<ul class="nav navbar-nav nav-pills">
@navbar(null)
</ul>
</nav>
</div>
}
}
App_Code文件\ Helpers.cshtml:
@* Logo based on Font Awesome icon *@
@helper PageHeaderLogo(FA icon) {
@PageHeaderLogo2(@<text>
<i class="fa fa-@icon"></i>
</text>)
}
@helper PageHeaderLogo2(Func<object, HelperResult> content) {
<div class="bm-logo">
@content(null)
</div>
}
视图\主页\ index.cshtml:
@section SECTION_HEADER{
@Wrappers.HeaderWrapper(this,
@<text>
<div>static html</div>
@Helpers.PageHeaderLogo(FA.star)
</text>,
@<text>
<div>my navbar</div>
</text>)
}
在此示例中,如果您查看实际视图,则组合如下:
1. @Helpers.PageHeaderLogo
被召唤
2. @Helpers.PageHeaderLogo
来电@Helpers.PageHeaderLogo2
3.当@Helpers.PageHeaderLogo
返回时,会调用@Wrappers.HeaderWrapper
。
4.当@Wrappers.HeaderWrapper
返回时,整个section SECTION_HEADER
将呈现为布局。
这只是一个相对简单的例子,没有部分观点。
所以我的问题是:
Func<object, HelperResult> content
类型的参数,然后在调用时可以使用@content(null)
进行渲染,如上所示。这是正确的做法,还是我做错了什么?我的意思是null
作为参数传递到&#34;内容&#34;这本身只是@helper的一个参数 - 这看起来很奇怪。你会期望它类似于常规字符串。感谢。