【问题标题】:MVC3: How to render index view and a partial view together on _LayoutMVC3:如何在 _Layout 上同时呈现索引视图和部分视图
【发布时间】:2014-02-09 12:49:23
【问题描述】:

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

这是我的 _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 的内容

在我的家庭控制器中,ActionResult Index 返回 View()

然后我在 _viewStart 上做了一点改动

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

}

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

【问题讨论】:

  • 那个 _viewstart 更改看起来很奇怪,因为您可能总是返回 PartialView() 以不使用布局...
  • 我需要这样的改变,所以当我点击 actionlink 时,我的 Index.cshtml 更新了,它只由 Index.cshtml 呈现,而不是整个主体

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


【解决方案1】:

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

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

现在您只能更新内容

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-25
    • 2017-03-31
    • 1970-01-01
    • 2018-10-20
    • 2013-05-31
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    相关资源
    最近更新 更多