我正在尝试在用户单击菜单项时将ASPX页面加载到对话框中。 “主页”页面使用VS2010构建,包含母版页和默认页面。 单击菜单选项时,将打开对话框,但该对话框完全空白。如果我删除了JS代码的链接(通过重命名菜单选项),则在同一选项卡中正确打开所需页面。 destinantion页面不使用与调用页面相同的母版页,因此我认为我对标记和占位符冲突没有问题。
答案 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 。
提示1 您的对话框就像一个详细的信息弹出窗口
按照标题基于ASPX的页面内容中所述的方法进行操作。一个非常简单的aspx,没有服务器控件,只是html来呈现你的小客户细节弹出窗口。要在JQuery对话框中呈现该页面,请遵循Haythem Tlili的回答。
提示2 提示1对你来说似乎有点矫枉过正
按照文章的部分回调到同一页面并生成HTML 以在同一页面中呈现您需要的内容
提示3 类似于删除确认弹出窗口
在这种情况下,可能删除按钮将在Repeater或类似的东西上。在你的JQuery脚本中,当提到弹出触发器或容器时,我建议你:
$("#<%= lblTrigger.ClientID %>").click(function()
。有了这个,因为Repeater的事情,不会有疯狂。提示4 您只需要该对话框上的独立aspx页面。
您可以在页面(html或aspx)上放置iFrame并使用$ .load来获取该页面。您需要了解iFrame has some issues,并且只有在价值的情况下才应该使用它。如果您希望在原始页面和iFrame中加载的页面之间进行有意义的通信,请不要使用此方案。
答案 2 :(得分:0)