我在P1.aspx中嵌入了P2.aspx, 我希望点P1.aspx中的Button1时,能设置P2.aspx中Label2的文本,并且点P2.aspx中的Button2时,能设置P1.aspx中Label1的文本
请问如何做,谢谢!
  //------------------------------------P1.aspx----------------------------------------------------
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:Label ID="Label1" runat="server" Text="Label1"></asp:Label>
        <asp:Button ID="Button1" runat="server" Text="Set Label2 In P2" />
        <div>
          <iframe src= "P2.aspx" frameborder="0"/>
        </div>
    </div>
    </form>
</body>
</html>//------------------------------------P1.aspx----------------------------------------------------
//------------------------------------P2.aspx----------------------------------------------------
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="Label2" runat="server" Text="Label2"></asp:Label>
        <asp:Button ID="Button2" runat="server" Text="Set Label1 In P1" />
    </div>
    </form>
</body>
</html>
//------------------------------------P2.aspx----------------------------------------------------

解决方案 »

  1.   


    Button1 事件中this.Page.ClientScript.RegisterStartupScript(this.GetType(), "update", "<script">window.frame[0].getElementById("Label2").innerText='XXX'</script>");Button2 事件中this.Page.ClientScript.RegisterStartupScript(this.GetType(), "update", "<script">window.top.getElementById("Label1").innerText='XXX'</script>");你码可能有问题,但思路是这样的
      

  2.   

    楼主,asp.net的机制其实就是通过将页面对象化,然后我们操作的东西就跟直接操作对象一样,比如我们可以写
    Label1.Text = "你好"这样的,但这一切都是基于b/s的基本原理,通过页面的提交来完成的,如楼主你描述的那样,P1要控制P2的内容,因为这两个东西根本不是一个页面而仅仅是通过iframe联系在一起的,也就是说,如果p1提交了,p1的整个页面也刷新了,随着p1的刷新,iframe中的p2也跟着刷新,而p1并不能直接控制p2,只能通过向p2传值的方式,比如,将iframe加一个runat=server的属性,然后控制iframe的src属性,可以向p2传递url的参数,比如src= "P2.aspx?Label2Text=xxxxxx",这样p2接受到了这个参数,然后去改变自己页面中控件的值,这个可以,但是如果说p2提交要来改变p1里面的值呢,只有一个途径了,javascript,输出javascript,改变html dom的元素的value,但是,这个的缺点就是,仅仅改变了页面显示的值,而没有加入asp.net的状态恢复,所以就算你改变了,p1中也得不到的,你在后台写Label1.Text,读不到被改变的值
      

  3.   

    把2.aspx做成用户控件不行麽?也能引用进别的页面的啊
      

  4.   

    原理很简单,通过js事件可以控制父窗口或者子窗口的页面控件的属性
    做个假设:你的页面控件和可见的内容全部在里面,点击事件---》
    onclick(fcunction()
    {
         window.location.href=“sonHTML.html”;
    })
    ---->子页面跟踪事件来源获取(其实不需要获取什么,直接操作)----》
    子页面js函数
    (    function test()
    {
          Var sonDiv=document.getElementById("容器的id(如果是服务器容器记得+CilentID)");
           sonDiv.style....
    })
      

  5.   

    parent  and  child
      

  6.   

    window.frame[''].getElementById("Label2").innerText="";
    window.parent.getElementById("Label1").innerText="";
    或使用用户控件,通过属性实现传递
      

  7.   

    我的思路是用委托与事件实现,不知是否可以.
    基本思路:
    在p1.aspx或p2.aspx中定义一个含参的委托
    分别在两个页面中定义事件
    点击button触发事件调用方法完成label值的设置