代码阅读总结之ASP.NET StartKit TimeTracker(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);
    }

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

时间: 2025-01-07 06:57:06

代码阅读总结之ASP.NET StartKit TimeTracker(QueryString之改进笔记)的相关文章

代码阅读总结之ASP.NET StartKit TimeTracker

自定义集合类排序(Sort())方法随笔 ASP.NET StartKit TimeTracker中定义了很多自定义集合类 例如: UsersCollection TimeEntriesCollection 等等 他们都是ArrayList类的子类 例如: TimeEntriesCollection存放自定义类TimeEntry 这些自定义集合类都实现了排序方法Sort 先看我写的一段代码: using System; using System.Collections; namespace Ar

代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)

在ASP.NET StartKit TimeTracker中由于程序设计上的小失误,我们可以利用这个BUG来达到越权访问aspx页面的能力. 我们都知道该系统定义了三种角色,分别为 Administrator(管理员) Project Manager(项目管理者) Consultant(顾问) 只有Administrator角色的用户才可以访问管理信息页面(ProjectList.aspx) 现在我来描述一下错误现象: 现在我有一个管理员的帐户ai_ai@126.com. 我们先用这个帐户登陆,

代码阅读总结之ASP.NET StartKit TimeTracker(数据绑定之困惑笔记)

以前在项目中数据绑定一直用<%# %> 今天在ASP.NET StartKit TimeTracker的AdminTabs.ascx中有一段代码: <a href='<%= Global.GetApplicationPath(Request) %>/<%# ((ASPNET.StarterKit.TimeTracker.BusinessLogicLayer.TabItem) Container.DataItem).Path %>'> <%# ((ASP

代码阅读总结之ASP.NET StartKit TimeTracker(应用程序路径之处理笔记)

在开发中我们为了整个程序目录结构清晰化,望望会建立许多不同的文件目录. 例如结构如下: |root |pic |web |usercontrol 在web目录中,我们怎么取到pic目录中的图片路径呢? 方法1: 让我们先看看ASP.NET StartKit TimeTracker的解决方案: ASP.NET StartKit TimeTracker的类Global中定义了一个公有方法: public static string GetApplicationPath(HttpRequest req

代码阅读总结之ASP.NET StartKit Commerce

ASP.NET StartKit Commerce简单,容易理解. 我认为是初次学习.NET代码的首选,不怕各位笑话,我曾经完整阅读该项目代码3次. 那么,通过阅读我们能学习到什么知识呢?请看我下面的总结: 1.多层结构的实现 依我见是2层结构:PL层和BLL层(没有明显的DAL层,DAL和BLL共同组成BLL层).但是我们可以学习到Db过程的调用方法. 2.Web服务的简单使用 3.Web用户控件的使用 4.数据绑定的相关知识 让我们先看该项目中的一段代码: <asp:HyperLink cs

代码阅读总结之Fitch and Mather 7.0

asp.net发生异常或错误时错误提示页面的处理方法 当asp.net发生异常或错误时,我们是怎么样处理错误提示页面? 我总结了下面几种方式: i:利用方法Response.Redirect() 看下面2段代码: 1. 在页面admin.aspx中发生异常时 try { //程序逻辑 } catch(OverflowException) { //在选中的上下文中所进行的算术运算.类型转换或转换操作导致溢出时引发的异常 //例如:小于int的MinValue或大于int的MaxValue,异常,转

实例代码解析:用ASP设计购物推车

设计 什么是购物推车? 你一定去过超级市场吧.在那里你可以推着推车,将中意的商品放进推车,或者把推车里的商品取出来重新放到货架,最后你推着推车去结账. 那么,在网上超市,客户也应该可以在浏览商品目录时,将中意的商品放进"电子推车".电子推车是超级市场推车的电子化.在网上商店里,这种电子推车又称为"购物推车",英文是Shopping Cart. 购物推车的设计目标 从程序员的观点来看,购物推车是维护购物者商品选购.允许察看.允许修改的一个对象.购物推车本身是一个非常简

Kryo简介及代码阅读笔记

更新:2012-08-01 版本 2.16长时间运行可能会导致OOM,版本2.18有bug,不能正确序列化map和collection. 真是悲剧,所用的每一个版本都有bug.不过从代码来看,作者有时的确比较随便..测试用例也少..(比起msgpack少多了) ======================================== Kryo官方网站:https://code.google.com/p/kryo/ 优点:     速度快!见https://github.com/eisha

FFMpeg框架代码阅读

FFMpeg框架代码阅读 内容摘要:FFmpeg是一个集录制.转换.音/视频编码解码功能为一体的完整的开源解决方案.FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用.FFmpeg支持MPEG. DivX.MPEG4.AC3.DV.FLV等40多种编码,AVI.MPEG.OGG.Matroska.ASF等90多种解码. TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg. FFmpeg主目录下主要有libavcodec.libavformat和l