【问题标题】:ASP.NET MVC 4 + jQuery address plugin = rendering issueASP.NET MVC 4 + jQuery 地址插件 = 渲染问题
【发布时间】:2013-01-22 23:32:12
【问题描述】:

我正在尝试在 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 的人仍然可以导航到该网站。

【问题讨论】:

    标签: jquery asp.net-mvc jquery-address


    【解决方案1】:

    您应该重新设计页面以在单独的操作中包含可交换的内容,这始终是部分视图。这样,更改的内容就在主要内容之外。主要内容可以有部分,子内容是在任何请求发生时被替换的内容。

    【讨论】:

    • 感谢您的回复!我用控制器条件解决了部分视图问题。问题与@section 的渲染有关,它可能存在也可能不存在于视图中,并且主布局将它们呈现在网站内的各个位置 - 而不是在呈现视图的 div 中。
    猜你喜欢
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 2012-05-24
    相关资源
    最近更新 更多