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

时间:2013-05-29 05:39:17

标签: asp.net asp.net-mvc asp.net-mvc-3 linq c#-4.0

我不想使用@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从每个控制器到查看以显示我的公司......

2 个答案:

答案 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")