我自己写了一个用户控件,很多页面都用到它
其中有个button的click我用Server.Transfer到另一个页面
现在遇到3个问题
1。如何取得这个控件里面textbox的值?
2。新页面怎么判断是自己直接打开,还是其他页面Server.Transfer过来而打开的
3。如何取得Transfer来的页面的url?谢谢知道朋友能不吝赐教,万分感谢!

解决方案 »

  1.   

    1. 增加一个属性给用户控件:
    public string A
    {
      get { return textbox.Text;}
      set { textbox.Text = value;}
    }
    在调用这个用户控件的页面代码种声明这个控件,如此控件是myUC.ucTest;protectd myUC.ucTest UcTest;
    然后可以通过: string a = UcTest.A; 来取得textbox的值2. 在新页面通过判断Request.UrlReferrer 是否存在 来得知它是通过别的页面打开还是直接打开的;
    3. 如2,通过Request.UrlReferrer来取得之前的url
      

  2.   

    Server.Transfer后页面为1.aspx:
    string Pre_Url = Request.ServerVariables("url");  //当前执行名,你处理一下取得文件名if (Pre_url == "1.aspx")
    {
    Response.write("直接打开");
    }
    else
    {
    Response.write("重定向打开");
    }
      

  3.   

    同意一楼的,不过第一个问题你可以用session来做
    比如Session["textBox"]=textBox.Text;
    在另外一个页面
    string s;
    s=Session["textBox"].ToString();
      

  4.   

    to 1楼
    我还是不很清楚如何取得用户控件,例如你的UcTest
    我看网上的的文章取得前一个页面的方法是
    WebForm1 oForm=(WebForm1)this.Context.Handler;
    但我有多个页面用到UcTest
    例如WebForm1 WebForm2 WebForm3
    没有得到页面对象,又如何能得到页面里的控件对象呢?
      

  5.   

    我比较常用的是2种方法~
    一、比如:
    this.RegisterStartupScript("Employee_StageItemDistribute","<script>window.showModalDialog('Employee_StageItemDistribute.aspx?userinfo="+appId+"','scrollbars=no;resizable=no;help=no;status:no')</script>");
    相应的在Employee_StageItemDistribute.aspx页面得Page_Load()里面
    string FromURL = Request.QueryString["userinfo"];
    这样就可以取到。
    二、一般而言,都是用Url参数的方式,但是Url有长度限制,而且如果是多参数得话,装配Url字符串就会让你头疼死掉。
    从一个页面跳转的时候,不要用Response.Redirect,而应用Server.Transfer,然后再目标网页中使用Context.Handler,前一个网页的类是abc,后一个网页是dbc.aspx,在前一个网页abc中定义公开字段public string ccc;那么在abc中跳转的时候用Server.Transfer(dbc.aspx)在后一个网页使用((abc)Context.Handler).ccc 就可以取出相应的值了。
    但是显然这样做还有一个问题,缺乏通用性。