使用jQuery.load()在div中打开ASP.NET页面

时间:2013-02-12 12:07:27

标签: jquery asp.net tabs telerik

我正在使用下面的代码在div标签内打开一个网页。

 $(document).ready(function () {
                $("#popupContact").load("Wizard.aspx");

            });

在Wizard.aspx页面中,我有一个telerik RadTabStrip控件。当页面加载时,选项卡控件显示没有任何问题,但我无法导航到标签页(标签不起作用)。

如果我使用jquery代码加载页面Wizard.aspx,那么每件事都可以。

<telerik:RadScriptManager runat="server" ID="RadScriptManager1" >
    </telerik:RadScriptManager>
    <div class="exampleWrapper" style="background-repeat: repeat;" >
    <a id="popupContactClose"><b>X</b></a>
   <b>Fill the Form</b>
        <telerik:RadAjaxLoadingPanel runat="server" ID="LoadingPanel1">
        </telerik:RadAjaxLoadingPanel>
        <telerik:RadAjaxPanel runat="server" ID="RadAjaxPanel1" LoadingPanelID="LoadingPanel1"
            Height="100%">
            <div style="float: left; width: 500px; ">
                <telerik:RadTabStrip ID="RadTabStrip1" SelectedIndex="0" runat="server" MultiPageID="RadMultiPage1"
                    Skin="Sunset" CssClass="tabStrip">
                </telerik:RadTabStrip>
                <telerik:RadMultiPage ID="RadMultiPage1" runat="server" SelectedIndex="0" OnPageViewCreated="RadMultiPage1_PageViewCreated"
                    CssClass="multiPage">
                </telerik:RadMultiPage>
            </div>
            <div id="specialdiv" class="previewWrapper" style="background-image: url('images/preview.jpg')">
                <uc1:PreviewCS ID="previewControl" runat="server"></uc1:PreviewCS>
            </div>
        </telerik:RadAjaxPanel>

    </div> 

4 个答案:

答案 0 :(得分:7)

jQuery.load()从页面获取呈现的HTML输出,并将此HTML插入到选择器元素中。

  

从服务器加载数据并将返回的HTML放入匹配的   元件。

在您的情况下,使用Wizard.aspx呈现的HTML嵌套在#popupContact div中。

此Telerik控件使用的任何服务器端事件等都不会回发到Wizard.aspx,因此无法按预期工作。


当使用需要回发的ASP.NET WebForms和控件时,我建议将Wizard.aspx代码添加到自定义用户控件(例如:Wizard.ascx)中,然后在AJAX中调用它{{ 3}}

这可确保所有回发等仍与ViewState链接。


或者(这是我个人采取的方法)看看删除你的网页控件的使用,并用不依赖于ViewState的HTML替换它们。

我不熟悉那个确切的Telerik控件,但我确信有一种方法可以在没有Telerik的情况下使用HTML&amp; jQuery的。然后,您可以使用jQuery.load()并在javascript中重新附加任何事件处理程序。

这将产生更轻,更可控的输出。

答案 1 :(得分:1)

除非Wizard.aspx在某种程度上是部分页面,否则调用$("#popupContact").load("Wizard.aspx");会将整个HTML文档加载到div中,这将导致完全无效的标记。无效的标记倾向于级联到很多其他无法正常工作的东西......

应该注意.load()允许您在注入之前从结果中拉出一个片段 - 将一个带有“向导”控件容器ID的URL片段添加到您提供给的URL中.load()

$("#popupContact").load("Wizard.aspx #wizard_or_whatever_you_named_this");

但是,您将丢失该页面上嵌入的任何CSS或JavaScript。

答案 2 :(得分:0)

您可以使用iframes

iframe:标记指定内嵌框架。内联框架用于在当前HTML文档中嵌入另一个文档。

例如:

<iframe src="Wizard.aspx" id="ifrmWizard"></iframe> 

$(document).ready(function () {
     $("#ifrmWizard").attr("src","Wizard.aspx");
});

答案 3 :(得分:0)

Jquery颜色盒终于为我工作了。它正在使用iframe加载外部窗口并且不会产生任何问题。

http://www.jacklmoore.com/colorbox/example1/