代码阅读总结之ASP.NET StartKit TimeTracker(QueryString之改进笔记)2012-01-18 博客园 aierong在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);    }