熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET中頁面間傳值各種方法介紹

2013-11-13 09:58:58  來源: .NET編程 

  一目前在ASPNET中頁面傳值共有這麼幾種方式

  表單提交
   <form action= targetaspx method = post name = form>
 <input name = param value = />
 <input name = param value = />
   </form>
  
   formsubmit();
  
   此種方在ASPNET中無效因為ASPNET的表單總是提交到自身頁面如果要提交到別一頁面需要特殊處理
<A targetaspx?param=&param=>鏈接地址傳送</A>
接收頁面 string str = Request[param]
Session共享
發送頁面Session(param) =
按收頁面  string str = Session(param)ToString(); 
Application共享
發送頁面 Application(param) = ;  
按收頁面 string str = Application(param)ToString(); 
此種方法不常使用因為Application在一個應用程序域范圍共享所有用戶可以改變及設置其值故只應用計數器等需要全局變量的地方
Cookie
ResponseRedirect()方式
   ResponseRedirect(targetaspx?param=&param=)
   接收頁面 string str = Request[param]
ServerTransfer()方式
   ServerTransfer(targetaspx?param=&param=)
   接收頁面 string str = Request[param]

  二如果在兩個頁面間需要大量的參數要傳傳遞如數據查詢等頁面時的方法傳值及其不便而第 種方法確有一獨特的優勢!但使用該方法時需要一定的設置現簡單介紹一下該方法的使用方式

  以查詢數據頁面為例

  在查詢頁面中設置如下公有屬性(QueryPageaspx)

  public class QueryPage : SystemWebUIPage
    {
        protected SystemWebUIWebControlsTextBox txtStaDate;
        protected SystemWebUIWebControlsTextBox txtEndDate;
       
        /// <summary>
        /// 開始時間
        /// </summary>
        public string StaDate
        {
            get { return thistxtStaDateText; }
            set { thistxtStaDateText = value; }
        }
        /// <summary>
        /// 結束時間
        /// </summary>
        public string EndDate
        {
            get { return thistxtEndDateText; }
            set { thistxtEndDateText = value; }
        }
       
        private void btnEnter_Click(object sender SystemEventArgs e)
        {
            ServerTransfer(ResultPageaspx);
        }
    }

  在顯示查詢結果頁面(ResultPageaspx)

  public class ResultPage : SystemWebUIPage
    {
        private void Page_Load(object sender SystemEventArgs e)
        {
            //轉換一下即可獲得前一頁面中輸入的數據
            QueryPage queryPage = (QueryPage)ContextHandler;
            ResponseWrite(StaDate);
            ResponseWrite(queryPageStaDate);
            ResponseWrite(<br/>EndDate);
            ResponseWrite(queryPageEndDate);
        }
    }

  三如果有許多查詢頁面共用一個結果頁面的設置方法

  在這種方式中關鍵在於 QueryPage queryPage = ( QueryPage )ContextHandler; 的轉換只有轉換不依賴於特定的頁面時即可實現

  如果讓所有的查詢頁面都繼承一個接口在該接口中定義一個方法該方法的唯一作用就是讓結果頁面獲得構建結果時所需的參數就可實現多頁面共享一個結果頁面操作!

  先定義一個類用該類放置所有查詢參數

  /// <summary>
    /// 結果頁面中要用到的值
    /// </summary>
    public class QueryParams
    {
        private string staDate;
        private string endDate;
        /// <summary>
        /// 開始時間
        /// </summary>
        public string StaDate
        {
            get { return thisstaDate; }
            set { thisstaDate = value; }
        }
        /// <summary>
        /// 結束時間
        /// </summary>
        public string EndDate
        {
            get { return thisendDate; }
            set { thisendDate = value; }
        }
    }

  接口定義

  /// <summary>
    /// 定義查詢接口
    /// </summary>
    public interface IQueryParams
    {
        /// <summary>
        /// 參數
        /// </summary>
        QueryParams Parameters { get;}
    }

  查詢頁面繼承IQueryParams接口(QueryPageaspx)

  /// <summary>
    ///查詢頁面繼承接口
    /// </summary>
    public class QueryPage : SystemWebUIPage IQueryParams
    {
        protected SystemWebUIWebControlsTextBox txtStaDate;
        protected SystemWebUIWebControlsTextBox txtEndDate;
        private QueryParams queryParams;
          
        /// <summary>
        /// 結果頁面用到的參數
        /// </summary>
        public QueryParams Parameters
        {
            get
            {
                return queryParams;
            }
        }
       
        private void btnEnter_Click(object sender SystemEventArgs e)
        {
            //賦值
            queryParams = new QueryParams();
            queryParamsStaDate = thistxtStaDateText;
            queryParamsEndDate = thistxtEndDateText;
            ServerTransfer(ResultPageaspx);
        }
    }

  別外的頁面也如此設置

  接收頁面(ResultPageaspx)

  public class ResultPage : SystemWebUIPage
    {
        private void Page_Load(object sender SystemEventArgs e)
        {
            QueryParams queryParams = new QueryParams();
            IQueryParams queryInterface;
            //實現該接口的頁面


            if (ContextHandler is IQueryParams)
            {
                queryInterface = (IQueryParams)ContextHandler;
                queryParams = queryInterfaceParameters;
            }
            ResponseWrite(StaDate);
            ResponseWrite(queryParamsStaDate);
            ResponseWrite(<br/>EndDate);
            ResponseWrite(queryParamsEndDate);
        }
    }


From:http://tw.wingwit.com/Article/program/net/201311/12187.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.