加载其他部分后加载页面的部分部分

时间:2012-07-04 03:20:10

标签: c# asp.net ajax

我有一个Asp.Net页。

<html>
<body>
 <div>
    <!-- Main body -->
 </div>
 <div>
    <!-- Right panel -->
 </div>
</body>
</html>

上一页是html页。

但它实际上在Asp.Net

对于主页面,将会有代码填写内容,这是正常内容和页面加载。

但是对于右侧面板,逻辑非常复杂,需要一些时间才能得到显示内容的结果。

所以,我想在主页完成加载后才加载页面的那一部分。

我已尝试Asp.Net AJAX使用update panel,但我没有找到正确的行为来完成这项工作。

所以,我正在考虑使用普通ajax,但我找不到从哪里开始。

所以,我想问有没有办法解决这个问题..任何可用的示例代码。

2 个答案:

答案 0 :(得分:0)

Ehem ......“正常的AJAX”? Microsoft AJAX是“普通的AJAX”。更新面板执行异步回发,这与使用WebMethod非常不同 - 这可能是您想要的。您仍然可以使用Microsoft AJAX来调用WebMethod。实际上,Microsoft AJAX控件工具包有一个扩展器,可以让您插入WebMethod调用。它被称为DynamicPopulateExtender

  

DynamicPopulate是一个简单的扩展器,可替换a的内容   控制Web服务或页面方法调用的结果。该   方法调用返回作为子项插入的HTML字符串   目标元素。

<ajaxToolkit:DynamicPopulateExtender ID="dp" runat="server"
    TargetControlID="Panel1" 
    ClearContentsDuringUpdate="true" 
    PopulateTriggerControlID="Label1" 
    ServiceMethod="GetHtml" 
    UpdatingCssClass="dynamicPopulate_Updating" />

要使其在“页面加载”上运行,只需在ScriptManager标记之后添加此脚本:

<script type="text/javascript"> 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_pageLoaded(PageLoadedHandler); 

    function PageLoadedHandler(sender, args) { 
        var behavior = $find('dp'); // or whatever you named it
        if (behavior) { 
            behavior.populate(''); // or pass in whatever key you want
        } 
     } 
</script>

答案 1 :(得分:0)

您可以尝试任何javascript框架。

如果您使用jQuery,可以尝试:

在div上设置ID:

<div id="right-panel">

然后使用此jQuery加载面板的数据:

$().ready(function() { $('#right-panel').load('http://path/to/your/script') } );

有关详细信息,请参阅jQuery文档。