代码之家  ›  专栏  ›  技术社区  ›  x__dos

ASP.NET+JQuery UI模式:将ASPX页加载到模式对话框

  •  4
  • x__dos  · 技术社区  · 16 年前

    我需要将ASPX页面加载到jQueryUI的模式对话框窗口中。 我使用了以下方法:通过Ajax调用将页面内容加载到对话框的DIV并显示:

    $.get('Page.aspx', function(response){
        $('#dialog').html(response);
        $("#dialog").dialog('open');
    });
    

    但我在137215738行有一个非常奇怪的错误(IE8)!: “theform.elements.length”-为空或不是对象 .JSDebbuger说,源代码不可用于此类位置。我假设这个错误是因为在Ajax调用之后页面上出现了多个“form”标记。

    我想知道,我怎样才能修好这个?或者用其他方式在模式对话框中显示ASPX页面?

    4 回复  |  直到 15 年前
        1
  •  4
  •   John Gietzen    16 年前

    由于以下几个原因,您无法将一个ASPX页的内容完全嵌入另一个ASPX页:

    1. 你会在筑巢 <html> 以非感性的方式贴标签。
    2. 您正在用另一个页面的javascript状态污染其中一个页面。

    你需要渲染 Page.aspx 作为partail视图,而不是包含ASPX页面的整个有效负载。

    我不能百分之百确定您是否可以在纯旧的ASP.NET中执行此操作而不调用 Render 以响应流为目标的单个控件的函数。

    但是,在ASP.NET-MVC中, 可以 使用PartialView结果。

        2
  •  6
  •   slolife    16 年前

    在模式中放入iframe,并将iframe src设置为page.aspx怎么样?

        3
  •  2
  •   x__dos    16 年前

    右键单击Visual Studio中的Web项目并添加新的通用HTTP处理程序。代码如下:

    对话框内容处理程序.ashx :

        public class DialogContentHandler: IHttpHandler
        {
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                string s = getDialogContent();
                context.Response.Write(s);
            }
    
            public bool IsReusable
            {
                get
                {
                    return true;
                }
            }
        }
    

    ASPX代码:

    $.get('DialogContentHandler.ashx', function(response){
        $('#dialog').html(response);
        $("#dialog").dialog('open');
    });
    
        4
  •  0
  •   x__dos    16 年前

    解决方法是创建通用的HTTP处理程序并写入只响应Nesseary HTML标记。

    推荐文章