我正在尝试在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);
}
问题:当视图作为部分视图时,我无法在视图中呈现任何@section。
PS:我想使用这个插件不引人注目,所以没有javascript的人仍然可以导航到网站,即使媒体播放器会刷新。
答案 0 :(得分:0)
您应该重新设计页面,以便在单独的操作中包含可交换的内容,这始终是部分视图。这样,更改的内容超出了主要内容。主要内容可以包含部分,子内容是在发生任何请求时被替换的内容。