【问题标题】:passing query string value from asp.net page to iframe将查询字符串值从 asp.net 页面传递到 iframe
【发布时间】:2012-08-29 14:46:09
【问题描述】:

我有一个带有文本框和按钮的 asp.net 页面。单击按钮时,我打开一个弹出窗口并使用 iframe 在其中加载一个页面。我想将文本框的值作为查询字符串传递给 iframe 中的页面。我该怎么做?

我尝试像这样使用服务器端 iframe:

<iframe id="popupframe" runat="server" src="~/temp.aspx" width="100%" height="455">
            </iframe>     

但是 temp.aspx 不加载并给出 404。如果我在没有服务器端标记的情况下使用它

<iframe id="popupframe"  src="../../../../temp.aspx" width="100%" height="455">
            </iframe>     

页面在 iframe 中加载,但我无法将文本框的值传递给 temp.aspx。请提出解决方案。谢谢

【问题讨论】:

    标签: javascript jquery asp.net


    【解决方案1】:

    temp.aspx 肯定是您网站的根目录吗? 404 错误通常非常清楚地表明您正在寻找的东西不存在!而且您在工作的纯 HTML 版本中有相对路径这一事实让我认为您的服务器端版本的路径可能存在问题。

    作为替代方案,您可以将查询字符串传递给弹出页面,并在该页面上使用一些 javascript 来操作 iframe 的 src 属性。

    例如(弹出页面上的脚本)

    var qs = window.location.search; // Gets the entire querystring - not very obvious!
    var iframe = document.getElementById("popupframe");
    iframe.src += qs; // Adds the querystring on to the end of the iframe's src.
    

    您希望在页面内容加载后运行它。我不知道你是在使用 jQuery 还是其他框架(或没有框架!)所以我不会详细说明如何做到这一点(但如果你需要我可以)。

    【讨论】:

    • 是的 temp.aspx 位于页面的根目录,而 ~/temp.aspx 不起作用。其中弹出窗口更深 4 级。
    • 我想在服务器端做。如果我想使用 javascript 来做,我是否需要将上面的 js 代码添加到正在加载弹出窗口的页面或在弹出窗口中打开的页面?
    • 抱歉,我不想让人觉得我很挑剔,但你写的是“在页面的根部”,这是模棱两可的,因为它是 网站的根部 这很重要。让我放心,您能否确认,如果您在浏览器中输入“your.site.com/temp.aspx”,您将获得该测试页面?
    • 您应该将该 javascript 放在单击按钮时弹出的页面中。我假设你的结构是:PageWithButton->(popup)->PageWithIFrame->(contains)->temp.aspx.
    • 这很奇怪!您是否尝试过在 iframe src 中不使用波浪号(即只是“/temp.aspx”)?
    【解决方案2】:

    试试这个:

    <iframe id="popupframe" runat="server" src="<%= Page.ResolveUrl("~/temp.aspx") %>" width="100%" height="455">
                </iframe> 
    

    【讨论】:

    • 服务器标签不能包含 结构。
    • 我的错,错过了你的 runat='server'。然后让它成为一个常规的 html iframe。它没有充分的理由拥有 runat 标记。
    • 看看标记中渲染了什么,有意义吗?确保您可以正常导航到该页面,可能存在与 iframe 无关的问题。
    【解决方案3】:

    我用过这个

    按钮点击事件上的代码隐藏

    this.iframRfer.Attributes["src"] = "visit_opd_refer.aspx?regnn="+opdNo; mpopup.Show();

    【讨论】:

      【解决方案4】:
       <% Int64 ss =Convert.ToInt64( Request.QueryString["id"].ToString());%>
       <% string bb = ss.ToString().Insert(0, "testing.aspx?id="); %>
        <iframe    src="<%=bb %>"   style="height: 100%; width: 100%; border: 2px;"> 
       </iframe>
      

      不需要任何脚本。这也是一种格式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-22
        • 2012-04-14
        • 1970-01-01
        • 2015-07-11
        相关资源
        最近更新 更多