1.a.aspx包含了一个iframe
iframe里包含页面b.aspx
那b.aspx的后台cs代码里能不能访问到a.aspx的控件?2.window.top 和 top.window 是干嘛的,top 是什么?以前一直做winform,对webform很多细节还不是很明白

解决方案 »

  1.   

    我看网上似乎只有js能访问到,后台没有什么变通的办法吗?
    都是服务器控件
    用了ajax
      

  2.   

    使用JS访问<script type="text/javascript">
           alert(parent.document.getElementById("TextBox1").value);
        </script>你也可以在后台cs代码中向前台注册这样的脚本
      

  3.   

    1 后台注册脚本:window.parent.document.getElementById("textid")  不行吗?2top属性每一个WINDOW对象,不论他是常规HTML页面。框架集页面。子框架还是孙子框架,都具有一个TOP属性。这个属性返回对载入浏览器得最顶层WINDOE对象得引用;。如果WINDOW对象是常规HTML页面,TOP就是SELF
    。。顶层框架及页面,  。。
    。。子框架,TOP指向框架得父亲,也就是说,下面两个表达式是等效的;
    SELF.TOP
    SELF.PARENT
    。如果WINDOW对象是自框架,TOP指向框架得祖父。也就是说下面两个表达式是等效得
    self.top
    self.parent.parent
    这可能提醒了你一个减少按键得好方法,尤其是当你认为能为能仅适用TOP本身是(那就是说,使用TOP本身来代替SELF.TOP或者WINDOW.TOP),这虽是可行的,但是应该特别注意:必须确保TOP真正指向你的顶层框架及
      

  4.   

    如果是读值,比如读a.aspx的TextBox,可以在B.aspx中放一个隐藏域(服务器控件),然后用JS读a.aspx中控件的值赋给隐藏域,然后在cs中读此隐藏域中的值,如果是赋值,直接在后台使用注册脚本的方式就可以
      

  5.   

    我没说明白,不是传递值,
    a里有一个menu菜单控件
    现在想在b的后台里取到a的这个menu,
    然后在b的后台里往a的这个menu里加菜单项也许我是有点奢望了,c/s里很多功能和设计模式看来b/s里是根本没法实现的,
    b/s好像很死板,什么都是写死的用viewstatus、隐藏域之类的有什么变通的办法能把要加的菜单项传递给a的这个菜单吗,
    a的这个菜单也是放在ajax的updatepanel里,理论上应该有办法接收到b传来的要加入的菜单项信息并加入而且持久下来的吧
      

  6.   


    也就是说top总是返回z-index最开始创建的那个窗口?
    即时是这样?
    page
    iframe1
      iframe2
        iframe3
          iframe4
          {
               window.top(返回page?)
           }
      

  7.   

    虽然不会.但是支持LZ.C/S是好弄些..我以前也是做C/S的,但是公司做B/S..我只好慢慢学起...
      

  8.   


    父窗口a.aspx.csprotected void Page_Load(object sender, EventArgs e)
            {
                base.Page_Load(sender, e); 
                if (!IsPostBack)
                {
                    Session["Setting"] = false;
                    MakeOperationsMenuWithMenu(OperationsMenu, ClientMenu); // 构造默认菜单
                }
            } protected void UpdateMenuHiddenButton_Click(object sender, EventArgs e)
            {
                MakeOperationsMenuWithMenu(OperationsMenu, (Menu)Session["OperationsMenu"]); //用iframe的菜单重建父窗口的菜单
                Session["Setting"] = "false";
            }iframe里嵌的b.aspx protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    if (Session["Setting"].ToString () == "true")
                    {
                        Session["OperationsMenu"] = ClientMenu; // iframe页面的菜单
                        ScriptManager.RegisterStartupScript((Page)HttpContext.Current.CurrentHandler, typeof(Page), "",
                        "window.parent.document.all.UpdateMenuHiddenButton.click();", true);
                    }
                }
            }
    不知道还有没有更简单的方法
    另外,不知道为什么,如果不用个setting标志控制,
    window.parent.document.all.UpdateMenuHiddenButton.click()在刷新父窗口的时候会连iframe里的页面也跟着更新,然后就是死循环有没有办法让父窗口在刷新的时候不自动刷新iframe,既然父窗口和iframe页面都是用来ajax控件,应该可以只局部刷新父窗口我要更新的部分吧
      

  9.   

    人工置顶一下
    ajax下的父窗口怎么才能只刷新局部而不刷新子iframe