ASP.NET + jQuery UI模板:将aspx页面加载到模态对话框中

时间:2010-02-13 18:26:25

标签: asp.net jquery-ui

我需要将aspx页面加载到jQuery UI的模态对话框窗口中。 我使用了以下方法:通过ajax调用将页面内容加载到对话框的div中并显示它:

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

但我在第137215738行(!)中出现了非常奇怪的错误(IE8):'the theform.elements.length' - 是null或不是对象。 JS debbuger说源代码不适用于此类位置。我假设发生此错误是因为在ajax调用之后页面上出现了多个'form'标记

我想知道,我该如何解决这个问题?或者也许在模态对话框中显示aspx页面的其他方式?

4 个答案:

答案 0 :(得分:6)

如何将IFRAME放入模态,并将IFRAME src设置为Page.aspx?

答案 1 :(得分:4)

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

  1. 您将以非感性的方式嵌套<html>标签。
  2. 您正在污染一个页面的javascript状态与另一个。
  3. 您需要将Page.aspx渲染为部分视图,而不是包含ASPX页面的整个有效负载。

    我不是百分百确定你是否可以在plain-old-asp.net中执行此操作而不调用单个控件的Render函数,使用Response流作为目标。

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

答案 2 :(得分:2)

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

DialogContentHandler.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');
});

答案 3 :(得分:-1)

通过创建通用HTTP处理程序并仅向响应写入nessesary html标记来解决。