MVC3:如何在_Layout上一起渲染索引视图和局部视图

时间:2014-01-20 11:13:12

标签: asp.net-mvc-3 razor partial-views asp.net-mvc-views

所以我得到了一个页面,它有一个标题,左边是导航菜单(这是一个局部视图),右边是一个内容(这是一个索引视图)。导航菜单后,我在重新加载每个页面的组件时遇到了问题。

所以这是我的_Layout

<body>
<div id="header">  
    <img alt="" src="../../Content/image/asd.png" />
</div>
<div id="menuBar"></div>
<div id="partial">
    @RenderBody()
    @Html.Partial("MenuPartial")           
</div>

我还有一个名为“MenuPartial”的部分视图,其中包含actionlink列表(使用updateTargetID =“partial”),它将更新Index.cshtml的内容

在我的homecontroller中,ActionResult索引返回View()

然后我对_viewStart进行了一些改动

@{
Layout = Request.IsAjaxRequest() ? null : "~/Views/Shared/_Layout.cshtml";

}

所以,我需要的是,每次动作链接被点击,将更新,我的部分视图(它有一些更新的值,所以它也必须更新)和我的索引视图。而我目前的结果是,当我点击动作链接时,身体被渲染,索引得到更新,但我的部分视图已经消失。有人有解决方案吗?

1 个答案:

答案 0 :(得分:0)

对于您的用例,您可以将@RenderBody()包装成div

<div id="content">
  @RenderBody()
</div>

现在您只能更新内容

$('#content').html("New fancy content")

然后您可以对导航执行相同的操作 - 只需将其作为控件中的操作使用,然后返回PartialView()