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

使用jQuery.load()在div中打开ASP.NET页面,jquery,asp.net,tabs,telerik,Jquery,Asp.net,Tabs,Telerik,我使用下面的代码打开div标记内的网页 $(document).ready(function () { $("#popupContact").load("Wizard.aspx"); }); 在Wizard.aspx页面中,我有一个telerik RadTabStrip控件。加载页面时,将显示选项卡控件,但没有任何问题,但我无法导航到选项卡页面(选项卡不工作) 如果我加载页面Wizard.aspx而不加载jquery代码,那么一切都可

我使用下面的代码打开div标记内的网页

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

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

如果我加载页面Wizard.aspx而不加载jquery代码,那么一切都可以正常工作

<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> 

X
填表
从页面获取呈现的HTML输出,并将此HTML插入选择器元素

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

在您的例子中,使用
Wizard.aspx
呈现的HTML嵌套在
#popupContact
div中

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


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

这确保所有回发等仍与
视图状态链接


或者(这是我个人会采取的方法)考虑删除web控件的使用,并将其替换为不依赖于
ViewState
的HTML

我不太熟悉Telerik控件,但我相信有一种方法可以不用Telerik,使用HTML和jQuery来实现这一点。然后可以使用
jQuery.load()
并在javascript中重新附加任何事件处理程序

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

从页面获取呈现的HTML输出,并将此HTML插入选择器元素

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

在您的例子中,使用
Wizard.aspx
呈现的HTML嵌套在
#popupContact
div中

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


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

这确保所有回发等仍与
视图状态链接


或者(这是我个人会采取的方法)考虑删除web控件的使用,并将其替换为不依赖于
ViewState
的HTML

我不太熟悉Telerik控件,但我相信有一种方法可以不用Telerik,使用HTML和jQuery来实现这一点。然后可以使用
jQuery.load()
并在javascript中重新附加任何事件处理程序

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

您可以使用

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

例如:


$(文档).ready(函数(){
$(“#ifrmWizard”).attr(“src”、“Wizard.aspx”);
});
您可以使用

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

例如:


$(文档).ready(函数(){
$(“#ifrmWizard”).attr(“src”、“Wizard.aspx”);
});

除非
Wizard.aspx
是一个部分页面,调用
$(“#popupContact”).load(“Wizard.aspx”)
将把整个HTML文档加载到
div
中,这将导致标记完全无效。无效的标记往往会层叠成一大堆其他不起作用的东西

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

$(“#popupContact”).load(“Wizard.aspx#Wizard_或任何你命名的东西”)


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

除非
Wizard.aspx
以某种方式是一个部分页面,调用
$(“#popupContact”).load(“Wizard.aspx”)
将把整个HTML文档加载到
div
中,这将导致标记完全无效。无效的标记往往会层叠成一大堆其他不起作用的东西

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

$(“#popupContact”).load(“Wizard.aspx#Wizard_或任何你命名的东西”)


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

Jquery颜色框终于为我工作了。它使用iframe加载外部窗口,没有产生任何问题


Jquery颜色框终于为我工作了。它使用iframe加载外部窗口,没有产生任何问题


要添加到这一点上,Curt的一般观点是正确的。Telerik的控件是iscriptControl,因此它们依赖于MS AJAX框架及其提供的功能。因此,正是这些事件提供了控件的客户端对象的初始化,这些控件提供了您正在寻找的丰富功能。当通过AJAX仅加载标记时,这些事件不可用,没有人可以为每个脚本控件调用$create()
<iframe src="Wizard.aspx" id="ifrmWizard"></iframe> 

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