在含有Request.QueryString页面中处理未能获得参数的错误处理方法

在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);
        }


这样我们在aspx页面中只要调用父类方法即可.方法会为我们处理异常.

例如:
int id;
GetQueryStringValue("",out id);

要是异常,方法会为我们处理,并转向页面ErrorQueryString.aspx
我们还可以在ErrorQueryString.aspx页面中做错误信息记录.例如把错误信息写到日志或者错误信息表中.

上面的方法现在只可以取string类型和int类型2种类型的参数
我们可以根据需要重载GetQueryStringValue方法即可.
我就在项目中重载了3次,还可以取枚举类型参数 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值