我需要将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页面的其他方式?
答案 0 :(得分:6)
如何将IFRAME放入模态,并将IFRAME src设置为Page.aspx?
答案 1 :(得分:4)
由于以下几个原因,您无法将一个ASPX页面的内容完全嵌入到另一个内容中:
<html>
标签。您需要将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标记来解决。