我想把菜单带来。
在我的layout.cshtml页面中

<div class="wrapper">
                <!-- Navigation -->

                  @Html.RenderAction("Navigation", "Nav")

导航控制器是这样的
public ActionResult Navigation()
{
    var pages = pageRepository.Pages;
    return View(pages);
}

导航视图如下所示
@model IEnumerable<Site.Domain.Entities.Page>
@{
    Layout = null;
    List<Site.Domain.Entities.Page> pages = new List<Site.Domain.Entities.Page>();

    foreach(var page in Model)
    {
        pages.Add(page);
    }
}

@foreach (var link in Model)
{
    if (link.ParentPage == "Home")
    {
    <li>@link.PageTitle</li>
    <ul>
        @foreach (var subLink in pages)
        {
            if (subLink.ParentPage == link.PageTitle)
            {
            <li>@subLink.PageTitle</li>
            }
        }
    </ul>

    }
}

当我转到…/nav/navigation时,视图工作正常
我要做的是把它带到我的布局页面,这样我就可以用它作为我的菜单了。
我继续收到@html.renderaction(“navigation”,“nav”)的错误
错误显示“与'system.web.webpages.webpageExecutingBase.write(system.web.webpages.helperResult)'匹配的最佳重载方法具有一些无效参数”
我应该用这个作为部分吗?最好的办法是什么?
谢谢你的建议!

最佳答案

对于您正在尝试的操作,@Html.RenderAction(..)是正确的调用。RenderActionChildActionExtension并且需要将该属性添加到控制器。
你的控制器应该像下面这样。请注意,您还需要返回partialview。

[ChildActionOnly]
public ActionResult Navigation()
{
    var pages = pageRepository.Pages;
    return PartialView(pages);
}

render操作不返回html,而是将内容添加到响应中。这样,你的观点应该是:
@{@Html.RenderAction("Navigation", "Nav");}

参考:http://msdn.microsoft.com/en-us/library/ee721274(v=vs.108).aspx

07-24 20:05