【问题标题】:Best way to access controls on parent page from a child page popup?从子页面弹出窗口访问父页面控件的最佳方法?
【发布时间】:2013-06-26 23:26:40
【问题描述】:

我有一个父 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);

【问题讨论】:

  • 你能告诉我们你是如何显示弹出窗口的吗? (例如,你使用 JavaScript)
  • 当然..我已经添加了弹出代码..
  • 每个人:不要关闭这个帖子..这是一个正确的问题,所以我不确定人们为什么要投票关闭这个问题......也没有说明投票的理由......我真的需要这里的答案......
  • 别担心,这个问题现在看起来很好,因为它已经过编辑所以它不应该被关闭:) 如果你看到你的问题获得接近投票,它通常表明有一些事情在其他用户能够回答之前需要改进 - 尝试再次阅读您的问题以查看您是否可以发现问题所在,或者如果您自己看不到任何问题,您可以发表评论以征求意见你可以改进问题。

标签: asp.net .net-2.0


【解决方案1】:

您遇到的问题是 HTTP 是无状态的,因此每个 HTTP 请求/页面都是完全独立处理的 - 这意味着无法直接修改父页面上呈现的内容,同时处理来自子页面的请求。

但是您可以做的是间接通过让子页面将一些标志/信息写入子页面和父页面都可以访问的某个地方,然后让父页面修改呈现的内容页面查看该信息以确定要呈现的内容。有很多不同的地方可以存储这个状态,例如

例如,您的子页面可能会将 ShowSomeLabel 标志写入代码隐藏中的 cookie,然后当子页面返回客户端时,它会强制刷新父页面,然后在代码隐藏中父页面它可以从 cookie 中读取该标志以确定哪些标签应该可见。

所有这些方法至少需要 一些 JavaScript 来刷新父页面,但是有些方法需要额外的 JavaScript 来将隐藏字段/查询字符串值从子页面复制到父页面提交之前的页面。您应该将这些信息存储在何处以及如何存储取决于您的具体要求。

【讨论】:

    【解决方案2】:

    你可以尝试使用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 警报消息“你好”。

    希望对您有所帮助。

    【讨论】:

    • 我不能通过 JavaScript 来完成。从技术上讲,它可能可以完成,但是我必须在父表单中启用/禁用的控件有些复杂,所以使用代码隐藏会很多更容易..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多