我正试着把我的菜单带来。
在我的_Layout.cshtml页面中
<div class="wrapper">
<!-- Navigation -->
@Html.RenderAction("Navigation", "Nav")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/导航时,视图工作得很好
我想要做的是把它放到我的_Layout页面中,这样我就可以用它作为我的菜单了。
我继续在@Html.RenderAction(“导航”,"Nav")中出错
错误表示“'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)‘的最佳重载方法匹配有一些无效的参数”
我应该用这个作为部分吗?做这件事最好的方法是什么?谢谢你的建议!
发布于 2013-01-25 17:03:43
对于您要做的事情,@Html.RenderAction(..)是正确的调用。RenderAction是ChildActionExtension,需要将该属性添加到控制器中。
您的控制器应该如下所示。注意到,您也希望返回一个PartialView。
[ChildActionOnly]
public ActionResult Navigation()
{
var pages = pageRepository.Pages;
return PartialView(pages);
}呈现操作不返回HTML,而是将内容添加到响应中。这样,您的视图应该如下所示:
@{@Html.RenderAction("Navigation", "Nav");}参考资料:http://msdn.microsoft.com/en-us/library/ee721274(v=vs.108).aspx
发布于 2013-01-25 17:06:07
因为Html.RenderAction是一个空值并且不返回值,所以需要用大括号“转义”调用。
@{Html.RenderAction("Navigation", "Nav");}在控制器中,您应该返回一个部分视图。
public ActionResult Navigation()
{
var pages = pageRepository.Pages;
return PartialView(pages);
}https://stackoverflow.com/questions/14526569
复制相似问题