MVC3: как визуализировать представление индекса и частичное представление вместе на _Layout

Итак, я получил страницу с заголовком, меню навигации слева (частичное представление) и контент справа (представление индекса). У меня возникла проблема с перезагрузкой компонентов каждой страницы после навигации по меню.

так вот мой _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>

i also got a partial view named "MenuPartial" which has list of actionlink(with updateTargetID = "partial") which will update the content of Index.cshtml

и в моем домашнем контроллере индекс ActionResult возвращает View()

затем я получил небольшое изменение в _viewStart

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

}

Итак, что мне нужно, так это то, что каждый раз, когда нажимается ссылка действия, будет обновляться мое частичное представление (у него есть обновленное значение, поэтому оно также должно быть обновлено) и мое представление индекса. И мой текущий результат, когда я нажимаю на ссылку действия, тело отрисовывается, индекс обновляется, но мое частичное представление исчезает. у кого-нибудь есть решение для этого?


person Laxus    schedule 20.01.2014    source источник
comment
Это изменение _viewstart выглядит странно, поскольку вы всегда можете вернуть PartialView(), чтобы не использовать макеты...   -  person TGlatzer    schedule 20.01.2014
comment
Мне нужно это изменение, поэтому, когда я нажимаю на ссылку действия, мой Index.cshtml обновляется, он отображается только Index.cshtml, а не все тело   -  person Laxus    schedule 20.01.2014


Ответы (1)


Для вашего случая использования вы могли бы, возможно, обернуть @RenderBody() в div

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

Теперь вы можете обновлять только содержимое

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

Затем вы можете сделать то же самое с навигацией - просто сделайте ее доступной как действие в контроллере и верните PartialView()

person TGlatzer    schedule 20.01.2014