在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); }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索异常
, 参数
, 错误
, result
, querystring
, formatexception
, 异常总结
数值
,以便于您获取更多的相关知识。