程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 代碼閱讀總結之ASP.NET StartKit TimeTracker(QueryString之改進筆記)

代碼閱讀總結之ASP.NET StartKit TimeTracker(QueryString之改進筆記)

編輯:關於ASP.NET

在ASP.NET StartKit TimeTracker中使用了大量QueryString

例如:

http://localhost/TTWebCSVS_cn/ProjectList.aspx?index=2

現在讓我們在IE地址裡面敲入下面的地址,會出現什麼情況?

http://localhost/TTWebCSVS_cn/ProjectList.aspx?index=a2

或者

http://localhost/TTWebCSVS_cn/ProjectList.aspx?index=

很明顯參數index要求接到的是整數.而我們敲入的地址中參數不符合要求,異常.

那有沒有辦法避免這類情況的發生呢?

其實我們可以定義一個頁面基類.

public class PageBase :System.Web.UI.Page

讓系統中的其他aspx頁面繼承PageBase.

把取得QueryString中數值寫成方法,放在基類中.

在基類編寫3個方法.

  <summary> 
    /**//// 得到QueryString參數的數值 
    /// </summary> 
    /// <param name="queryStringName">QueryString參數的名稱</param> 
    /// <param name="result">QueryString參數的數值(string類型)</param> 
    protected void GetQueryStringValue(string queryStringName,out string result) 
    { 
      result=String.Empty; 
      result=Request.QueryString[queryStringName]; 
       
      //沒有接到參數,異常,轉到出錯誤頁 
      if (result==null || result=="") 
      { 
        errorPageRedirect(); 
      } 
    } 
  
/**//// <summary>
    /// 得到QueryString參數的數值
    /// </summary>
    /// <param name="queryStringName">QueryString參數的名稱</param>
    /// <param name="result">QueryString參數的數值(int類型)</param>
    protected void GetQueryStringValue(string queryStringName,out int result)
    {
      string str;
      GetQueryStringValue(queryStringName,out str);
      result=0;  
      try
      {
        result=Convert.ToInt32(str);
      }
      catch(OverflowException)
      {
        //小於int的MinValue或大於int的MaxValue,異常,轉到出錯誤頁
        errorPageRedirect();
      }
      catch(FormatException)
      {
        //非數字字符,異常,轉到出錯誤頁
        errorPageRedirect();
      }
      catch(ArgumentException)
      {
        //空引用,異常,轉到出錯誤頁
        errorPageRedirect();
      }
    }
  
/**//// <summary>
    /// 發生錯誤時,頁面轉向
    /// </summary>
    protected void errorPageRedirect()
    {
      Response.Redirect("ErrorQueryString.aspx",true);
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved