动态加载时更新面板无法工作?
Posted
技术标签:
【中文标题】动态加载时更新面板无法工作?【英文标题】:updatepanel cannot work when loading dynamically? 【发布时间】:2016-05-23 16:34:12 【问题描述】:这是我项目的结构。
我想将QuesEdit.aspx
页面加载到index.aspx
中的div
和ajax
。
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>
触发事件为<li><a href="javascript:void(0)" onclick="loadDiv('test.aspx');">test</a></li>
我试过了:(在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 控件。如果需要,您可以根据用户输入切换其显示。
【讨论】:
上面解释了为什么我需要在页面内加载页面。(我重新编辑了问题)。有没有更好的解决方案来实现这个功能?以上是关于动态加载时更新面板无法工作?的主要内容,如果未能解决你的问题,请参考以下文章