我不想使用@html.Action和@Rendersection可以任何人指导我使用的内容
我有一个菜单,有许多公司正在进入<li>
它正在从数据库中取货
菜单应显示在每个页面上并从Db.some中获取一个告诉我创建一个类
但我不知道他想说什么
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所以我必须通过List从每个控制器到查看以显示我的公司......
答案 0 :(得分:2)
您需要在局部视图中渲染菜单子项的集合。
行动
public PartialViewResult FeaturedStoresMenu()
{
var model = _context.companyService.GetFeaturedStores();
return PartialView(model);
}
View = FeaturedStoresMenu(partial)
@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);
}
}
来自here
答案 1 :(得分:0)
创建一个包含菜单的PartialView,将其放入Views / Shared folder
然后把它放在你想要的任何页面上
@Html.Partial("NameofView")