我使用MVC 4& amp; EF。单击各种菜单(标题中可用)时,我会加载不同的部分视图。
目前,我禁用了浏览器返回按钮。
这是场景.. 用户点击了Menu1&看到PartialView1,然后单击Menu2并查看PartialView2。
现在,我想回到之前的View(即:PartialView1)。浏览器返回将无效。
我尝试使用history.js文件并尝试过。它不起作用,因为它现在已经过时了。我怎样才能做到这一点?
这是我的Ajax发布代码...... navigateElement:function(actionUrl,containerElem){
//load view without postback
$.ajax({
type: "POST",
url: actionUrl,
data: {},
cache: false,
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data.status == "Denied") {
Error.accessDenied(data.message);
} else {
containerElem.html('');
containerElem.html(data.viewMarkup);
}
},
error: function (xhr, ajaxOptions, thrownError) {
console(thrownError);
_showErrorMessage();
}
});
},
上面的方法将检索部分视图并替换在PageContainer(我根据用户操作生成不同局部视图的视口)。
现在,如何在用户查看的部分视图之间导航前进/后退。
显然,将访问过的部分视图存储在数据库中最终会导致性能下降,因为此应用的目标受众数量很多。
答案 0 :(得分:0)
在使用SPA和AJAX方面,我认为这是一种相当普遍的情况。如果你能保证与HTML5的兼容性,那么我会说History API将是你要走的路;快速谷歌搜索应该为您提供良好的示例代码。
基本上,HTML5的History API规范定义了以以编程方式将页面状态推送到浏览器的历史堆栈中的方法。这样,每次使用AJAX更新视图时,都会将该状态推送到浏览器历史记录中。然后,您可以重新启用浏览器的后退功能,它应该适用于用户的意图。
在这些场景中,我倾向于认为“浏览器返回”功能是一个很好理解和预期的范例,因此禁用可能会让您的用户感到困惑。只是我的想法。