我有一个非常标准的MVC解决方案,包含_Layout.cshtml,Index.cshtml等。我试图在布局中加载一些必需的包只有一次,所以当我改变视图时,我只得到我需要的东西从服务器,而不是我已经拥有(捆绑,布局HTML等)。
关注此帖:MVC 3: How to render a view without its layout page when loaded via ajax?
我现在有一个更新的_ViewStart。它似乎没有工作:
将以下JS视图模型作为_Layout中的包的一部分加载:
var subjectservice = new baseservice(); // baseservice is an empty function
subjectservice.subjects = {};
subjectservice.getSubjects = function () {
alert('Hit');
subjectservice.subjects = 'data';
}
subjectservice.getSubjects();
预期的行为是:
但是,无论我导航到哪个页面,即使已经加载了Layout,我也总会收到警告消息。在Chrome调试器中查看网络面板会显示我的所有捆绑的js文件都会在每次加载页面时重新加载。
我试图在不重新加载包和_Layout的情况下加载的视图示例:
public ActionResult Index()
{
return View();
}
如何只加载一次布局及其捆绑包?
答案 0 :(得分:2)
我相信你指的是使用Ajax和Pushstate的能力。
幸运的是,这是一个很棒的OSS lib。
https://github.com/defunkt/jquery-pjax
对_ViewStart.cshtml执行以下操作
@{
Layout = Request.Headers["X-PJAX"] != null ?
"~/Views/Shared/_PjaxLayout.cshtml" :
"~/Views/Shared/_Layout.cshtml"; // uses the _Layout.cshtml for unsupported browsers
}
此处有更多信息 http://chrisseroka.wordpress.com/2012/04/24/getting-starteg-with-pjax-and-asp-net-mvc/