如何将ASPX页面加载到JQuery对话框中

时间:2011-11-16 15:35:26

标签: jquery asp.net dialog modal-dialog

我正在尝试在用户单击菜单项时将ASPX页面加载到对话框中。 “主页”页面使用VS2010构建,包含母版页和默认页面。 单击菜单选项时,将打开对话框,但该对话框完全空白。如果我删除了JS代码的链接(通过重命名菜单选项),则在同一选项卡中正确打开所需页面。 destinantion页面不使用与调用页面相同的母版页,因此我认为我对标记和占位符冲突没有问题。

3 个答案:

答案 0 :(得分:12)

如果你正在使用jQueryUI Dialog,这是小菜一碟:

$(document).ready(function() {
    $('#menu-item').click(function() {
        var mydiv = $('#mydiv');
        mydiv.dialog({ autoOpen: false });
        // Load the content using AJAX
        mydiv.load('mypage.aspx');
        // Open the dialog
        mydiv.dialog('open');

        return false;
    });
});

希望这会有所帮助。

答案 1 :(得分:3)

以下代码显示了传递post值的模态JQuery对话框上的aspx页面(它是存储在服务器端HiddenField中的学生ID)

“主页”页面aspx

<img alt="Previsiones" name="btnPrevisiones" id="btnButton" title="Dialog title"
src="imageFile.png" onclick="ShowStudentFullRecord(document.getElementById('<% =hiStudentId.ClientID%>').value)" />

<强>的JavaScript

function ShowStudentFullRecord(StudentId)
{
    var jsFileLocation = $('script[src*=yourJsFileName]').attr('src');
    jsFileLocation = jsFileLocation.replace('yourJsFileName.js', '');    
    $("#divStudentFullRecord")
        .load(jsFileLocation + "../SomeFolder/SomePage.aspx", {Id: StudentId })
        .dialog({
            autoOpen: false,
            show: "blind",
            hide: "explode",
            modal:true          
            });    
    $("#divStudentFullRecord").dialog( "open" );
    return false;        
}

“目标”页面aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SomePage.aspx.cs" Inherits="SomePage" %>
  <label id="lblLabelId">
  <%= this.Something %></label>

“目标”页面aspx.cs

protected string Something { get; set; }

protected void Page_Load(object sender, EventArgs e)
{
     if (!IsPostBack)
     {
         int studentId = Convert.ToInt32(Request.Form["Id"]);
         StudentFullRecord studentFullRecord = GetStudentFullRecord(studentId);
         this.Something = studentFullRecord.SomeImportantInformation; 
     }
}

现在完全不同

我发现this article非常有用。它提供了三种使用jquery将aspx内容加载到页面中的方法。它还解释了如何将参数作为帖子值传递给新页面。

这篇文章明确了一个重要的事实:

  

请注意,如果您将ASP.NET控件嵌入到生成的页面中   不应该指望它们在返回后表现得像ASP.NET控件   并嵌入为原始HTML。基础WebForm不知道新的   内容已添加到页面中,因此会处理嵌入的任何表单内容   仅作为原始HTML

所以...你想在JQuery UI对话框上加载一个aspx页面

提示1 您的对话框就像一个详细的信息弹出窗口

按照标题基于ASPX的页面内容中所述的方法进行操作。一个非常简单的aspx,没有服务器控件,只是html来呈现你的小客户细节弹出窗口。要在JQuery对话框中呈现该页面,请遵循Haythem Tlili的回答。

提示2 提示1对你来说似乎有点矫枉过正

按照文章的部分回调到同一页面并生成HTML 以在同一页面中呈现您需要的内容

提示3 类似于删除确认弹出窗口

在这种情况下,可能删除按钮将在Repeater或类似的东西上。在你的JQuery脚本中,当提到弹出触发器或容器时,我建议你:

  • 使用Label作为CSS的触发器,使其像按钮一样。
  • 使用Panel作为容器。
  • 在jquery脚本中引用这两个时,请执行以下操作:$("#<%= lblTrigger.ClientID %>").click(function()。有了这个,因为Repeater的事情,不会有疯狂。

提示4 您只需要该对话框上的独立aspx页面。

您可以在页面(html或aspx)上放置iFrame并使用$ .load来获取该页面。您需要了解iFrame has some issues,并且只有在价值的情况下才应该使用它。如果您希望在原始页面和iFrame中加载的页面之间进行有意义的通信,请不要使用此方案。

答案 2 :(得分:0)

我认为你所追求的是一个显示实际页面的模态窗口,对吧?如果有,请查看fancyboxcolorbox 这些可以显示各种各样的内容,包括网址