首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用@html.renderpartial还是@html.renderaction?

我应该使用@html.renderpartial还是@html.renderaction?
EN

Stack Overflow用户
提问于 2013-01-25 16:54:48
回答 2查看 14K关注 0票数 7

我正试着把我的菜单带来。

在我的_Layout.cshtml页面中

代码语言:javascript
复制
<div class="wrapper">
                <!-- Navigation -->

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

Nav控制器看起来像这样

代码语言:javascript
复制
public ActionResult Navigation()
{
    var pages = pageRepository.Pages;
    return View(pages);
}

导航视图如下所示

代码语言:javascript
复制
@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)‘的最佳重载方法匹配有一些无效的参数”

我应该用这个作为部分吗?做这件事最好的方法是什么?谢谢你的建议!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-25 17:03:43

对于您要做的事情,@Html.RenderAction(..)是正确的调用。RenderActionChildActionExtension,需要将该属性添加到控制器中。

您的控制器应该如下所示。注意到,您也希望返回一个PartialView

代码语言:javascript
复制
[ChildActionOnly]
public ActionResult Navigation()
{
    var pages = pageRepository.Pages;
    return PartialView(pages);
}

呈现操作不返回HTML,而是将内容添加到响应中。这样,您的视图应该如下所示:

代码语言:javascript
复制
@{@Html.RenderAction("Navigation", "Nav");}

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

票数 12
EN

Stack Overflow用户

发布于 2013-01-25 17:06:07

因为Html.RenderAction是一个空值并且不返回值,所以需要用大括号“转义”调用。

代码语言:javascript
复制
@{Html.RenderAction("Navigation", "Nav");}

在控制器中,您应该返回一个部分视图。

代码语言:javascript
复制
public ActionResult Navigation()
{
    var pages = pageRepository.Pages;
    return PartialView(pages);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14526569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档