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

來源:互聯網
上載者:User

在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)      {        //Null 參考,異常,轉到出錯誤頁        errorPageRedirect();      }    }  /**//// <summary>    /// 發生錯誤時,頁面轉向    /// </summary>    protected void errorPageRedirect()    {      Response.Redirect("ErrorQueryString.aspx",true);    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.