动态加载时更新面板无法工作?

Posted

技术标签:

【中文标题】动态加载时更新面板无法工作?【英文标题】:updatepanel cannot work when loading dynamically? 【发布时间】:2016-05-23 16:34:12 【问题描述】:

这是我项目的结构。

我想将QuesEdit.aspx 页面加载到index.aspx 中的divajax

index.aspx中的代码:

<script type="text/javascript">
    function loadDiv(name) 
        $.ajax(
            type: 'GET',
            async:true,
            url: '/index/innerAspx/' + name,
            success: function (data) 
                $("#mainPage").html(data);
            
        );
    
</script>

触发事件为&lt;li&gt;&lt;a href="javascript:void(0)" onclick="loadDiv('test.aspx');"&gt;test&lt;/a&gt;&lt;/li&gt;

我试过了:(在index.aspx

<asp:UpdatePanel ID="UpdatePanel3" runat="server"> <ContentTemplate> <div id="mainPage" class="content"> </ContentTemplate> </asp:UpdatePanel>

我还尝试将 updatepanel 放入包含整个内容的 QuesEdit.aspx

当我单击QuesEdit.aspx 中的按钮时,我只想更新div 中的QuesEdit.aspx。但是,似乎发送了回发并且请求刷新整个页面。我收到错误消息:http 404,找不到请求页面/index/QuesEdit.aspx

为什么更新面板不起作用?

PS:我想生成一个类似的页面

通过点击侧边栏的项目,我想在主页加载对应的asp.net

【问题讨论】:

【参考方案1】:

这是一种奇怪的方法 - 使用它您可能会遇到更多问题。您的更新面板正在工作,但您已在其中加载了要回发的整个页面的内容。我不确定为什么需要在页面内加载页面,但听起来您应该对 QuesEdit 内容使用 ascx 控件 - 并在此处包含更新面板。然后,您可以从两个页面中引用该控件,它就会起作用。

您收到 404 的原因是因为您将 QuesEdit.aspx 页面的内容加载到不同目录中的页面内。由于您使用的是相对路径,因此您正在打破引用层次结构。

编辑:

例子:

QuesEdit.ascx 控件 - 在这里放置您的更新面板和您在当前 QuesEdit.aspx 页面中拥有的所有功能。

QuesEdit.aspx 页面 - 在这里,加载您的 QuesEdit.ascx 控件。

index.aspx 页面 - 在这里,加载您的 QuesEdit.ascx 控件。如果需要,您可以根据用户输入切换其显示。

【讨论】:

上面解释了为什么我需要在页面内加载页面。(我重新编辑了问题)。有没有更好的解决方案来实现这个功能?

以上是关于动态加载时更新面板无法工作?的主要内容,如果未能解决你的问题,请参考以下文章

需要动态更改 iframe

当我动态更改其框架时,即使重新加载后 UITableView 内容大小也不会更新

FlexSlider动态加载和删除无法正常工作的图像

Ext动态加载Toolbar

ExtJS updateLayout 不工作

检测动态加载的 iframe