【问题标题】:Problem after using jQuery to load external page(s) (aspx) into div(s)使用 jQuery 将外部页面 (aspx) 加载到 div 后出现问题
【发布时间】:2011-07-16 07:52:27
【问题描述】:

我有一个页面,它通过不同的 .aspx 页面合并不同的部分。这些页面将使用 jQuery.load() 动态加载到相应的 div(s) 中。它们都正确呈现,但是,当单击任何部分页面中的任何 asp:button 时,整个主页将被部分页面替换,即使 asp:button 只是弹出一个消息框。 没办法解决,请指教!

非常感谢。 威廉·崔

【问题讨论】:

  • 用 iframe 替换你的 div。

标签: jquery asp.net html asp.net-ajax


【解决方案1】:

当您提交页面时,您的请求将转到嵌套页面,并且它的响应仅针对该页面。浏览器接收来自嵌套页面的响应并仅显示它返回的内容。

这是我正在做的类似的事情。

我有一个主页,在该页面中我通过 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();

【讨论】:

  • 谢谢!那么,我可以直接加载 ascx 吗?
  • 嗨 DidierDotNet,我已经尝试过你的想法,但任何 asp:button 仍然会导致整个主页被部分页面替换。我知道将按钮更改为普通的 html 按钮可以解决问题,但是我不能强迫其他队友停止在部分页面中使用他们常用的 Web 表单设计。那么,你知道除了 iframe 之外还有什么技术可以将部分页面与主页面隔离开来吗?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多