0

我不想使用@html.Action 和@Rendersection 任何人都可以指导我使用什么

我有一个菜单,里面有很多公司<li>从 DB 获取

菜单应该显示在每一页上,它从 Db 中获取。有人告诉我创建一个类

但我不知道他想说什么

  public PartialViewResult FeaturedStoresMenu()
        {
            var model = _context.companyService.GetFeaturedStores();
            return PartialView(model);
        }

                            @RenderSection("FeaturedCategoriesMenu", false)
                        </li>
                        <li><a class="MenuBarItemSubmenu" href="#">Coupons</a>
                            <ul>
                                @Html.Action("FeaturedStoresMenu", "Home")
                            </ul>
                        </li>

是的,在很多页面上,但我不想使用“RenderSection”和“html.Action”还有其他我可以使用的东西.....因为如果我使用@renderSection,所以我必须从每个控制器传递列表查看以显示我的公司....

4

2 回答 2

2

您需要在局部视图中呈现菜单子项的集合。

行动

public PartialViewResult FeaturedStoresMenu()
    {
        var model = _context.companyService.GetFeaturedStores();
        return PartialView(model);
    }

查看 = FeaturedStoresMenu(部分)

@model YourAppNamespace.YourModelType //type is collection for example List<SumenuItem>
<ul>
     @foreach(var item in Model)
     {
        <li ><a href="@item.SubmenuUrl">@item.SubmenuName</a></li>
     }  
</ul>

如果您需要像这样将参数传递给您的子操作

@Html.Action("FeaturedStoresMenu", "Home", new {id = 555})

行动应该是

 public PartialViewResult FeaturedStoresMenu(long id)
    {
        var model = _context.companyService.GetFeaturedStores(id);
        return PartialView(model);
    }

或者您可以编写自定义 Html 帮助方法并在此方法中编写菜单逻辑。例子:

public static class LabelExtensions
 {
      public static string Label(this HtmlHelper helper, string target, string text)
      {
           return String.Format("<label for='{0}'>{1}</label>", target, text);

      }
 }

这里

于 2013-05-29T06:28:42.177 回答
0

制作一个包含您的菜单的 PartialView,将其放在 Views/Shared 文件夹中

然后把它放在你想要的任何页面上

@Html.Partial("NameofView")
于 2013-05-29T06:44:30.823 回答