我有一个页面,通过不同的.aspx页面合并不同的部分。这些页面将使用jQuery.load()动态加载到相应的div(s)中。它们都是正确呈现的,但是,当单击任何部分页面中的任何asp:按钮时,整个主页都会被部分页面替换,即使asp:按钮只是弹出一个消息框。我发现没有办法解决这个问题,请多多指教!
非常感谢。William Choi
发布于 2011-03-16 05:52:57
当您提交页面时,您的请求将转到嵌套页面,而它的响应仅针对该页面。浏览器接收来自嵌套页面的响应,并只显示它返回的内容。
这是我正在做的类似的事情。
我有一个主页,在这个页面中,我通过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();
发布于 2011-03-16 05:44:11
最有可能的原因是你的按钮返回到了相应的页面。您应该通过从单击按钮时启动的js函数/代码返回false来禁用回发。
你没有提到你想在这里实现什么行为-如果合并仅仅是为了创建一个布局,那么在放入div之前,你应该从页面输出中排除不相关的标签,比如head,body和forms。这里的一种更好的技术是让用户控件(而不是页面),然后使用一些处理程序将所请求的用户控件加载到临时页面上&使用HttpServerUtility.Execute方法来捕获描述这种技术的输出检查this article。另一方面,你希望在发布时保留子页面的行为,那么iframes就是一种方法。
https://stackoverflow.com/questions/5321243
复制相似问题