ASP.NET服务器不支持异步处理页面。

3

我有一个页面有一个按钮,我想通过点击按钮异步加载两个数据表格的数据。

这是页面的代码,我使用jQuery调用其他两个页面并获取它们返回的HTML。

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Solutions_CashCenter_StockManagement_Test_Test" %>
<asp:Content ID="Content2" ContentPlaceHolderID="cphCenter" Runat="Server">
<style type="text/css">
    #wait {
    position:absolute;
    top:0px;
    right:10px;
    width:200px;
    z-index:1000;
    vertical-align:middle;
    text-align:center;
    background: #febf00;
    display:none;
}
</style>
<script src='<%= ResolveUrl("../../../../Scripts/jquery-1.4.1.js") %>' type="text/javascript"></script>
<script type="text/javascript">
    $(function () {
        $('#wait')
        .ajaxStart(function () { $(this).show(); })
        .ajaxStop(function () { $(this).hide(); });

        $('input:button').live('click', loadData);
    });

    function loadData() {
        $.get("Source.aspx", {},
        function (data) {
            $('#a1').html(data);
        },
        "html");

        alert('This alert is asynchronous (1st)');

        $.get("Source2.aspx", {},
        function (data) {
            $('#a2').html(data);
        },
        "html");

        alert('This alert is asynchronous (2nd)');
    }
</script>
<div id="test13">
    <input type="button" id="btnLoad" value="Load" />
</div>
<div id="a1"></div>
<div id="a2"></div>
<div id="wait">Please wait <img src="ajax-loading.gif" /></div>
</asp:Content>

我有两个aspx页面,Source1.aspx和Source2.aspx。它们只包含一个gridDataView和在OnLoad事件中很少的代码。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Source.aspx.cs" Inherits="Solutions_CashCenter_StockManagement_Test_Source" %>
<form runat="server">
<cc1:GridDataView runat="server" ID="gridTest" >
</cc1:GridDataView>
<asp:SqlDataSource ID="dsTest" runat="server" ConnectionString="<%$ ConnectionStrings:WebPortalConnectionString %>"
    ProviderName="<%$ ConnectionStrings:WebPortalConnectionString.ProviderName %>">
</asp:SqlDataSource>
</form>

服务器端:

Thread.Sleep(5000);
dsTest.SelectCommand = "SELECT 'test1', 'test2', 'test3'";
this.gridTest.DataSourceID = "dsTest";
this.gridTest.DataBind();

对于第二个页面也是一样的,只不过网格中的数据不同。

我的结果是两个警报同时发生,但是网格一个接一个地加载,即第一个网格在5秒后出现,然后另一个在另外的5秒后出现。也就是说,服务器实际上并没有同时处理它们。

我做错了什么?我应该如何组织所有内容以使其按照我需要的方式工作?

1个回答

4

“页面加载”是什么意思?我没有加载页面,而是进行了Ajax请求。 - Vitalii Korsakov
@VitaliiKorsakov Ajax请求是在客户端异步加载页面。你仍然在加载一个页面 - 我所说的是在服务器上进行的处理 - 而不是在客户端浏览器上。由于会话锁定,服务器上的处理被阻塞。 - Aristos
@VitaliiKorsakov 禁用此页面的会话,您将看到它按照您的期望工作。 - Aristos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接