我有一个父ASP.NET页面,它有一个以弹出窗口的形式打开子ASPX页面的链接。
我需要从弹出页面的代码隐藏控制父页面。例如,启用/禁用父页中标签的可见性,或设置文本框的文本值。
我怎样才能做到这一点?
代码用于打开弹出的ASPX:
//JavaScript function:
function showPopup()
{
var strReturn = window.open("TaxReportInputsForm.aspx",'popup','width=390,height=120');
}按钮代码:
Page.ClientScript.RegisterStartupScript(GetType(), "popup", "showPopup();", true);发布于 2013-06-26 09:35:18
您面临的问题是HTTP是无状态的,因此每个HTTP请求/页都是完全独立处理的--这意味着在处理来自子页面的请求时,无法直接修改父页面上呈现的内容。
但是,您可以做的是间接地修改呈现的内容,让子页面将一些标志/信息写出到子页面和父页都可以访问的某个地方,然后让父页查看该信息以确定要呈现什么。有很多不同的地方可以存储这种状态。
例如,您的子页面可能会将一个ShowSomeLabel标志写入代码隐藏中的cookie,然后当子页面返回到客户端时,它强制刷新父页,然后在父页的代码隐藏中,它可以从cookie中读取该标志,以确定哪些标签应该可见。
所有这些方法都至少需要一些JavaScript才能导致父页的刷新,但是有些方法在提交之前需要额外的JavaScript将隐藏的字段/查询字符串值从子页复制到父页。您应该在哪里以及如何存储这些信息,这取决于您的具体需求。
发布于 2013-06-26 08:51:21
您可以尝试使用javascript,假设A.aspx是父页面,而B.aspx是打开的页面,您可以使用"opener“来控制A.aspx的DOM。
A.aspx链接标记和javascript:
<a href="B.aspx" target="_blank">open page B</a>
<script type="text/javascript">
function fun_A() {
alert("hello");
}
</script>B.aspx
<input id="btnChild" type="button" value="call function in Page A" onclick="opener.fun_A();" />当您从A.aspx打开A.aspx并单击来自B.aspx的按钮时,您将看到A.aspx警报消息"hello“。
希望这能帮到你。
https://stackoverflow.com/questions/17313935
复制相似问题