1

我正在使用下面的代码在 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

4 回答 4

7

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

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

在您的情况下,呈现的 HTMLWizard.aspx嵌套在您的#popupContactdiv 中。

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


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

这确保所有回发等仍然与ViewState.


或者(这是我个人会采用的方法)考虑删除对 Web 控件的使用,并将它们替换为不依赖于ViewState.

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

这将导致更轻、更可控的输出。

于 2013-02-12T12:12:23.430 回答
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。

于 2013-02-12T12:16:10.633 回答
0

您可以使用iframe

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

例如。:

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

$(document).ready(function () {
     $("#ifrmWizard").attr("src","Wizard.aspx");
});
于 2013-02-12T12:15:36.550 回答
0

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

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

于 2013-02-13T04:55:23.623 回答