我有一个父ASP.NET页面,其中有一个链接,以弹出窗口的形式打开子ASPX页面。
我需要从弹出页面的代码隐藏控制父页面。例如,enablie /禁用父页面中标签的可见性,或设置文本框的文本值。
我该如何做到这一点?
用于打开弹出窗口ASPX的代码:
//JavaScript function:
function showPopup()
{
var strReturn = window.open("TaxReportInputsForm.aspx",'popup','width=390,height=120');
}
按键代码:
Page.ClientScript.RegisterStartupScript(GetType(), "popup", "showPopup();", true);
答案 0 :(得分:1)
您遇到的问题是HTTP是无状态的,因此每个HTTP请求/页面都是完全独立处理的 - 这意味着无法直接修改父页面上呈现的内容处理来自子页面的请求。
然而,你可以做的是间接地修改通过让孩子将一些标志/信息写出到孩子和父页面都可以访问的某个地方,然后拥有父母而呈现的内容页面查看该信息以确定要呈现的内容。有许多不同的地方可以存储这种状态,例如
例如,您的子页面可能会在代码隐藏中为cookie写一个ShowSomeLabel
标志,然后当子页面返回到客户端时,它会强制刷新父页面,然后在代码中 - 在父页面后面,它可以从cookie中读取该标志,以确定哪些标签应该可见。
所有这些方法都需要至少某些 JavaScript才能刷新父页面,但有些需要额外的JavaScript才能将隐藏的字段/查询字符串值从子页面复制到父页面提交之前的页面。您应该在何处以及如何存储此信息取决于您的具体要求。
答案 1 :(得分:0)
你可以尝试使用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打开B.aspx,然后点击B.aspx中的按钮, 你会看到A.aspx警告信息“你好”。
希望这可以帮到你。