default.aspx中有个iframe(src="webform1.aspx"),在webform1.aspx里有个隐藏域hid,在default.aspx的后台中如何访问该隐藏域?

解决方案 »

  1.   

    下面是主要代码,楼主参考一下:default.aspx:
    <script language="javascript">
       //在提交之前,获取iframe中的指定对象的值,然后将该值赋给页面中的隐藏域(这是HiddenField的实例,在后台处理事件中,获取此HiddenField的值)
       function s()
       {
          var val = window.frames["hf"].document.getElementById("h1").value;
          document.getElementById("hf1").value = val;
                
          return true;
       }
    </script>
    <!-- 省略html代码 -->
    <!-- 这里是一个ifreame -->
    <div>
        <iframe width="200" height="200" id="hf" src="webform1.aspx">
        </iframe>
    </div>
    <asp:HiddenField ID="hf1" runat="server" />
    <asp:Button ID="btn" runat="server" OnClientClick="return s()" OnClick="Click" Text="Click" />default.aspx.cs:
    //按钮事件代码
    protected void Click(object sender, EventArgs e)
    {
        Response.Write(hf1.Value);
    }webform1.aspx:
    <input type="hidden" id="h1" value="h1" />
      

  2.   

    假如webform1.aspx隐藏域是hd.
    要在default.aspx中访问iframe中的webform1.aspx中的控件,如果直接在default.aspx的后台来访问webform1.aspx是行不通的..
    但是办法是人想出来的,我们可以首先通过js来获取Webform1.aspx中的hd的内容,然后我们在default.aspx中加入一个html textbox(hd_Text)控件并把他设置为runat=server,把js获得的value值赋给hd_Text,这样一来,我门就可以访问Webform1.aspx中的内容了..
    具体代码如下:
    default.aspx
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
        <script>
            function GetValue()
            {
                document.getElementById("hd_Text").value=IFRAME1.document.getElementById("hd").value;
            }
        </script>
    </head>
    <body onload="GetValue();">
        <form id="form1" runat="server">
        <div>
            <iframe src=webform1.aspx id="IFRAME1"></iframe>
            <br />
            <br />
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />&nbsp;<input
                id="Button2" type="button" value="button" onclick="GetValue()" />
            <input id="hd_Text" type="text" style="display:none" runat=server /></div>
        </form>
    </body>
    </html>webform1.aspx
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:HiddenField ID="hd" runat="server" Value="haha" />
        </div>
        </form>
    </body>
    </html>
      

  3.   

    &nbsp;<input
                id="Button2" type="button" value="button" onclick="GetValue()" />
    这个可以去掉,我测试用的~~在default.aspx.cs中加入这个按钮事件测试下
    protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write("<script>alert('" + hd_Text.Value+ "')</script>");
        }
      

  4.   

    能够访问到该frame但是无法访问到frame中的隐藏域。
      

  5.   

    你们两个都少东西了
    var val = window.frames["hf"].window.document.getElementById("h1").value;