server.transfer 用法


server.transfer 特點:

1:大家熟悉的一個特點,用server.transfer 跳轉到新頁面時,瀏覽器的地址是沒有改變的(因為重定向完全在服務器端進行,瀏覽器根本不知道服務器已經執行了一次頁面變換),有些場合需要這種效果。(但要注意一點,如果此時刷新頁面,瀏覽器便會問用戶是否“重試”發送表單,如果用戶點擊“是”,那么,表單中的數據被重新發送到服務器。如過發送表單中有類似向數據庫中插入一條記錄, 那么同一表單被多次加入到數據庫中)

2:在網上查了一下資料,基本上認為,相對於Response.Write,server.transfer更高效一些,因為重定向完全在服務器端進行,減少客戶端對服務器的請求

3: Server.Transfer只能夠轉跳到本地虛擬目錄指定的頁面,而Response.Redirect則沒有這個要求。

 

4:看到網上用 Server.Transfer在頁面間傳值,學習了一下,個人感覺用這個方法,在頁面間傳遞很多 參數的時候,是挺好用的,現在把他記錄下來。 

    4.1:  建立頁面a.aspx , b.aspx,  需要把a.aspx頁面用戶輸入的“用戶名” ,“性別“,”身高“等信息傳遞給b.aspx頁面

    4.2:  a.aspx.cs              

public partial class _a : System.Web.UI.Page
{
    private string strName;
    private string strSex;

    public string StrSex
    {
        get { return this.ddlSex.Text; }
        set { strSex = value; }
    }

    public string StrName
    {
        get 
        {
            if (this.tbxName.Text == "")
            {
                return "未填姓名";
            }
            else
            {
                return this.tbxName.Text;
            }
        
        }
        set { strName = value; }
    }


    protected void Page_Load(object sender, EventArgs e)
    {
        

    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        Server.Transfer("b.aspx");
    }
}

 

4.3: 在b.aspx頁面上加入這段代碼,要不然后面沒法繼續

<%@ Reference Page="~/a.aspx"  %>

4.4:  b.aspx.cs

    protected void Page_Load(object sender, EventArgs e)
    {
        _a pageA = (_a)Context.Handler;
        Response.Write("姓名:" + pageA.StrName + "    年齡:" + pageA.StrSex);
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM