我有一个叫做TopBar.cshtml
的文件
<nav class="white" role="navigation">
<div class="nav-wrapper container">
<a id="logo-container" href="#" class="brand-logo">Logo</a>
<ul class="left hide-on-med-and-down">
<li><a href="#">Navbar Link</a></li>
</ul>
<ul id="nav-mobile" class="sidenav">
<li><a href="#">Navbar Link</a></li>
</ul>
<a href="#" data-target="nav-mobile" class="sidenav-trigger"><i class="material-icons">menu</i></a>
</div>
</nav>
如您所见,为菜单项定义了两个相同的部分。一个用于大屏幕,另一个用于小屏幕。在ASP.NET MVC中,我可以这样做:
<nav class="white" role="navigation">
<div class="nav-wrapper container">
<a id="logo-container" href="#" class="brand-logo">Logo</a>
<ul class="left hide-on-med-and-down">
@Menu()
</ul>
<ul id="nav-mobile" class="sidenav">
@Menu()
</ul>
<a href="#" data-target="nav-mobile" class="sidenav-trigger"><i class="material-icons">menu</i></a>
</div>
</nav>
@helper Menu() {
<li><a href="#">Navbar Link</a></li>
}
换句话说,我可以使用@helper
获取中的HTML重用一个视图,而且只有一个视图。
然而,据我所知,这在ASP.NET Core中被删除了。我能做些什么才能得到同样的结果?
发布于 2018-04-16 01:40:36
你可以做这样的事。
@{
Func<System.Collections.Generic.IEnumerable<string>, Microsoft.AspNetCore.Html.IHtmlContent> Menu = @<ul>
@foreach (var menuEntry in item)
{
<li><a href="@menuEntry">@menuEntry</a></li>
}
</ul>;
}
你可以像这样使用菜单功能。
@Menu(new[]{"Home","About"})
https://github.com/aspnet/Razor/issues/715#issuecomment-299342376 -这里提到,ASP.NET团队没有做@helper实现的任何计划。
https://stackoverflow.com/questions/49831829
复制