0

我们在通过 Ajax 加载多个局部视图时遇到了一个小问题,我无法缩小范围。

该页面通过单击按钮加载 6 个部分视图。

我们最初让服务器在单个页面上呈现部分视图,但这意味着处理是连续运行的,并且页面不会很快返回。

所以我创建了一些 javascript 来运行和异步 ajax 请求来刷新它们(请注意,部分视图 url 在标记中呈现以使这更容易,暂时)。

function refreshAllPartials() {
    $('div.partial').each(function () {
        var partialView = $(this);
        var partialViewUrl = $(partialView).attr('partialUrl');
        var parent = $(partialView).parent();
        $(parent).empty();
        $.ajax({
            url: partialViewUrl,
            type: "GET",
            async: true,
            success: function (response, textStatus, jqXHR) {
                $(parent).html(response);
            }
        });
    });
}

现在,问题是虽然每个部分视图请求大约需要 0.7 秒才能返回(使用 Fiddler 检查),但 Firebug 的输出显示了一些不同的东西。

萤火虫输出

fiddler 的输出在几毫秒内是一致的,但是 firebug 输出和用户的视觉效果似乎在不断变化。

我猜想关于javascript如何工作以及渲染如何工作,我缺少一些东西,但也许我只是做错了什么?

我正在使用 ASP.NET MVC3,但是,我不确定它是否相关,因为 Fiddler 显示 IIS 正在及时返回数据。

4

1 回答 1

1

此问题是控制器操作未标记为仅需要对会话状态的读取访问权限。

ASP.NET 中的 SessionState 有一个“特性”,即只有 1 个请求可以独占访问会话,然后所有其他请求都在其后面“排队”。

我需要做的就是将不需要对会话的写入访问权限的操作方法分离到另一个控制器中并添加:

[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]

作为新控制器的属性。

中提琴,现在非常高效的网站,非常活泼。

于 2013-01-15T16:56:25.960 回答