我有一个MVC 4(Razor)应用程序正在转换为类似于SPA单页应用程序的更多内容。它不是纯粹的SPA - 其中5个页面使用Ajax加载到body部分,而其他一次性页面不需要使用Ajax。
除了主页索引页面外,我一切正常。我需要链接回索引,但我想继续使用一个布局母版页。问题是我无法弄清楚如何有时加载局部视图,然后其他时候使用布局母版渲染页面。
我需要为非Ajax页面保留@RenderBody。
<body>
<section id="BodySection">
@RenderBody
</section>
</body>
对于Ajax页面,在导航按钮上单击我使用JQ将部分视图转换为#BodySection。
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);
}
});
}
如何混合两种类型的页面加载?
答案 0 :(得分:1)
不确定这是否是最实用的方法,但这就是我处理它的方式:
首先创建2个视图,我将它们称为“page.cshtml”和“partialpage.cshtml”,以及2个动作(或者你可以将它们分成2个控制器,具体取决于你的请求),让我们称之为“somecontroller / page” “和”somecontroller / partialpage“
partialpage.cshtml:
@{
Layout = "";
}
@*Exact page content here*@
page.cshtml
@{
Layout = "Your master layout directory";
}
@Html.Action("somecontroller","partialpage")
当您需要将页面视为部分视图时,请使用部分页面操作,当您需要包含主视图的整页时,请使用页面操作。
这只是我自己的方式,如果有人知道任何实际的方法,请告诉我。
感谢。