我正试图在MVC4中建立一个新网站,以避免在任何情况下刷新整页。目标是在主布局上有一个媒体播放器,在用户导航到网站的过程中保持完整。
我决定使用jquery地址插件,以便能够使用深度链接。我为我的控制器设置了一个规则,如果操作是通过ajax调用的,则返回部分视图而不是完整视图。我还设置了地址插件来阻止请求,改为执行ajax请求,并在div中提供结果
服务器端
return Request.IsAjaxRequest() ? (ActionResult) PartialView() : View();
客户端
$.address.state('/').init(function (event) {
$('a').address();
});
$.address.change(function (event) {
$.ajax({
cache: false,
url: event.value,
success: ajaxSuccess
});
});
function ajaxSuccess(data, status) {
$("#mainContent").html(data);
}
问题是:当视图作为分部视图时,我无法在视图中渲染任何@部分。
附言:我希望使用这个插件不引人注目,这样任何没有javascript的人都可以导航到网站,即使媒体播放器会刷新。
您应该重新设计页面,以便在单独的操作中具有可交换的内容,这始终是部分视图。这样,更改的内容就在主要内容之外。主内容可以有部分,子内容是在发生任何请求时被替换的内容。