2011-03-16 90 views
1

我有一个页面,它将不同的.aspx页面合并为不同的部分。这些页面将通过使用jQuery.load()动态加载到相应的div中。然而,当他们点击任何部分页面中的任何asp:按钮时,它们全部被正确渲染,整个主页面将被部分页面替换,即使asp:按钮只是弹出消息框。 我找不到解决的办法,敬请指教!使用jQuery将外部页面(aspx)加载到div中后出现问题

非常感谢。 William Choi

+0

iframe出现更换你的div。 – AbiusX 2011-03-16 05:05:30

回答

0

当您提交页面时,您的请求将进入嵌套页面,并且其响应仅适用于该页面。浏览器接收到嵌套页面的响应,并只显示它返回的内容。

这是我在做什么,是类似的。

我有一个主页,并在该页面中,我通过Ajax加载部分。这些部分是ASP.NET用户控件(不是页面),原因如下:页面有自己的形式,嵌套时不能很好地播放。 ajax请求通过一些参数加载控件,然后使用虚拟空白页面呈现控件(我将进一步向下解释)。生成的HTML被发送回页面并加载到一个div中。

这是我如何加载控件(本例中“FormlessPage”是虚拟页):

public class FormlessPage : Page { public override void VerifyRenderingInServerForm(Control control) { } } 

//Ajax call 
FormlessPage page = new FormlessPage(); 
UserControl ctrl = null; 
ctrl = (UserControl)page.LoadControl("~/UserControls/someUC.ascx"); 
// Initialize parameters 
// Add the control to the page 
page.Controls.Add(ctrl); 

// Render the page and capture the resulting HTML. 
StringWriter writer = new StringWriter(); 
HttpContext.Current.Server.Execute(page, writer, false); 
// Return that HTML, as a string. 
json = writer.ToString(); 
+0

谢谢!那么,我可以直接加载ascx吗? – 2011-03-16 07:11:22

+0

嗨DidierDotNet,我试过你的想法,但任何asp:按钮仍然导致整个主页被部分页面所取代。我知道将按钮更改为普通的HTML按钮可以解决问题,但是我无法强迫其他队友停止在部分页面中使用其常见的Web表单设计。那么,您是否知道除iframe可以将主页上的部分页面隔离的任何技术? – 2011-03-16 17:09:50

0

最可能的原因是您的按钮回发到相应的页面。您应该通过从点击按钮时启动的js函数/代码中返回false来禁用该帖子。

你没有提到你想在这里实现什么样的行为 - 如果合并仅仅是为了创建一个布局,那么你应该在放入div之前从页面输出中排除不相关的标签,例如头部,主体&表单。一个更好的技术是使用用户控件(而不是页面),然后使用一些处理程序来加载请求的用户控件在临时页面&使用HttpServerUtility.Execute方法来捕获输出 - 检查描述此技术的this article。另一方面,您希望在发布后保留子页面行为,然后iframes将是要走的路。

相关问题