我们一般在接收传递过来的整数参数的时候,通常可以这样做
int questionID = Convert.ToInt32(Request["QuestionID"]) 或者
int questionID = Convert.ToInt32(HttpContext.Current.Request["QuestionID"])
传递字符也大致相识,通常参数都会比较多,这样我们就必须重复做
转换参数的工作,如果我们实现一个自己的上下文,集中处理这些参数,
这样会更好一些,而且还可以对参数进行集中的验证处理,下面简单实现一个
自定义的上下文
public?class?TestContext
{
????int?questionID?=?-1?;
????public?int?QuestionID
????{
????????get?{?return?questionID?;?}
????}
????
????public?static?int?GetIntFromQueryString(string?key)
????{
????????string?returnValue?=?-1?;
????????string?queryStringValue?=?String.Empty??;
????????queryStringValue?=?HttpContext.Current.Request.QueryString[key]?;
????????try
????????{?
????????????//这里可以写一些对该参数的验证代码,比如是否是整数等等
????????}
????????catch?{}
????????return?returnValue?;
????}?
???
????public?TestContext
????{?
????????questionID?=?GetIntFromQueryString("QuestionID")?;
????}
????//实现current静态属性
????public?static?TestContext?current
????{
????????get
????????{?
?????????????if?(HttpContext.Current?==?null)
??????????????????return?new?TestContext()?;
?????????????
?????????????return?(TestContext)HttpContext.Current.Items["TestContext"];
????????}
????}
}
如果我们需要获取questionID,这样就可以了
int questionID = TestContext.Curent.QuestionID
另外,这个Context类,不只可以对QueryString,还可以对所有属于上下文的post
Session等,进行集中处理
其实集中处理上下文,还有一个好处,就是可以对整个开发团队的参数命名
进行规范化
ps:上面的代码是用文本写的,可能会有笔误,并没有进行调试
本文地址:http://com.8s8s.com/it/it8836.htm