【问题标题】:How to reuse HTML snippets INSIDE a cshtml view in ASP.NET Core MVC?如何在 ASP.NET Core MVC 中的 cshtml 视图中重用 HTML 片段?
【发布时间】:2018-04-14 13:12:38
【问题描述】:

我有一个名为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 重用 INSIDE 一个且只有一个视图。

但是,据我所知,这已在 ASP.NET Core MVC 中删除。我该怎么做才能获得相同的结果?

【问题讨论】:

  • 和Partial Views不一样吗?
  • @Thangadurai,部分视图在外部文件中定义。在这种情况下,封装和自包含更好。
  • @mohammadrostamisiahgeli 您找到什么解决方案来重用视图内的 HTML 代码?
  • 使用旧的@Html.Partial。

标签: razor asp.net-core asp.net-core-mvc


【解决方案1】:

你可以这样做。

@{
   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 实现。

【讨论】:

    猜你喜欢
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 2023-02-08
    相关资源
    最近更新 更多