2016-02-12 113 views
0

这是我的项目的结构。 enter image description here动态加载时updatepanel无法工作?

我想ajax加载QuesEdit.aspx页面进入divindex.aspx

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>

我也试图把updatepanelQuesEdit.aspx包含整个内容为enter image description here

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

为什么updatepanel不工作?

PS:我想产生这样enter image description here

页面通过点击侧边栏上的项目,我想加载相应asp.net的炫魅

回答

0

这是一个奇怪的做法 - 和一个与你可能会有更多的问题。您的更新面板正在运行,但您已将其中发布的整个页面的内容加载到该面板中。我不知道为什么你需要在页面中加载一个页面,但是听起来你应该对QuesEdit内容使用一个ascx控件 - 并且包含你的更新面板。然后,你可以从这两个页面引用该控件,它将起作用。

你得到404的原因是因为你正在将QuesEdit.aspx页面的CONTENT加载到不同目录中的页面内。由于您使用的是相对路径,因此您通过这样做打破了参照层次结构。

编辑:

例子:

QuesEdit.ascx控制 - 在这里把你的更新面板和所有的您在当前QuesEdit.aspx页面具备的功能。

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

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

+0

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