Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Razor 如何在ASP.NET核心MVC中的cshtml视图中重用HTML片段?_Razor_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

Razor 如何在ASP.NET核心MVC中的cshtml视图中重用HTML片段?

Razor 如何在ASP.NET核心MVC中的cshtml视图中重用HTML片段?,razor,asp.net-core,asp.net-core-mvc,Razor,Asp.net Core,Asp.net Core Mvc,我有一个名为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">

我有一个名为
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核心MVC中被删除。我该怎么做才能得到同样的结果呢?

    您可以这样做

    @{
       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"})
    

    -这里提到,ASP.NET团队没有任何计划来执行@helper实现。

    这与局部视图不同吗?@Thangadurai,局部视图是在外部文件中定义的。在这种情况下,封装和自包含更好。@mohammadrostamisiahgeli您找到了什么解决方案来在视图中重用HTML代码?使用old@HTML.Partial。