Частичное представление SPA для некоторых страниц с RenderBody для других

0

У меня есть приложение MVC 4 (Razor), которое преобразуется, чтобы больше напоминать одностраничное приложение для SPA. Это не чисто SPA-5 страниц, которые используют Ajax для загрузки в разделе тела, тогда как другие одноразовые страницы не должны использовать Ajax.

У меня есть все, кроме домашней страницы индекса. Мне нужно связать назад с индексом, но я бы хотел использовать одну главную страницу макета. Проблема в том, что я не могу понять, как иногда загружать частичные представления, а затем в другое время отображать страницу с помощью мастера компоновки.

Мне нужно сохранить @RenderBody для не-Ajax-страниц.

<body>
   <section id="BodySection">
     @RenderBody 
   </section>
</body>

Для страниц Ajax на кнопке навигации нажмите я Ajax на частичный вид в #BodySection, используя JQ.

function LoadPage(actionarg, controllerarg) {
        var link = '@(Url.Action("action", "controller"))';
        link = link.replace("action", actionarg);
        link = link.replace("controller", controllerarg);

        $.ajax({
            url: link,
            type: "POST",
            cache: false,
            async: true,
            data: { data: '' },
            success: function (result) {
                $("#BodySection").html(result);
            }
        });
    }

Как можно смешивать два типа загрузки страницы?

Теги:
razor
asp.net-mvc
single-page-application
asp.net-mvc-4

1 ответ

1
Лучший ответ

Не уверен, что это самый практичный способ, но я так понимаю:

Сначала создайте 2 представления, я назову их "page.cshtml" и "partialpage.cshtml" и 2 действия (или вы можете разделить их на 2 контроллера, в зависимости от вашего запроса), позвоните им "somecontroller/page" и "somecontroller/page", somecontroller/partialpage"

partialpage.cshtml:

@{
    Layout = "";
}
@*Exact page content here*@

page.cshtml

@{
    Layout = "Your master layout directory";
}
@Html.Action("somecontroller","partialpage")

Когда вам нужна страница в виде частичного представления, используйте действие частичной страницы, когда вам нужна полная страница с основным видом, а затем используйте действие страницы.

Это только мой собственный путь, пожалуйста, дайте мне знать, если кто-нибудь знает какой-либо практический путь.

Благодарю.

  • 0
    Это работает и имеет смысл с точки зрения организации, которая у меня есть. Я установил для своего индекса значение @ Html.Partial ("_ Home") и создал новый частичный объект Home, например, ваш partpage.cshtml. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню