首页 > 日常 > 在Webform (asp.net)中使用Route 路由之基本实现

在Webform (asp.net)中使用Route 路由之基本实现

2012年9月7日 发表评论 阅读评论

路由这个东西其实很早前就出现了,更多的是出现前其它的平台/语言中,对于 .Net 来说比较晚。那时很羡慕只需要在 apache 、ngix 中配置下就可以使用了。

我记得第一次近距离的使用是在门楼网里,那个时候屈屈把 Route 的这部分代码给剥离出来单独给我看过,使用了一个第三方组件,并且需要修改 IIS 的设置才能生效,缺点就是会接管所有的请求包括图片、样式等等。后来把代码消化后,用在了学校的新闻网里,没有想到5年多过去了这部分代码还在继续为师生们服务着。

再后来,微软推出了 MVC,到现在已经是第4个版本了。在 MVC 中,.Net 终于原生支持 Route了,但是在最开始还只是为 MVC 来服务的,网上也很多教程都是针对 MVC 系列的,我们这里就来讨论下如何在 webform 上来实现。

首先,需要在项目里添加 Global.asax 文件,在这个文件里要做的事情就是在应用启动的时候,添加路由注册信息到里面。

protected void Application_Start (object sender, EventArgs e) { RegisterRoutes (RouteTable.Routes);  }

然后在protected void RegisterRoutes (RouteCollection routes){routes.MapPageRoute (“default”, “home”, “~/default.aspx”);}里方法是这样的,什么意思,就是说你访问 /home 的话,路由会直接帮你转向到 default.aspx 页面去。

上面的方式可以满足最基本的需求,可是事实上很多情况下,url 地址里是有带有参数的,如何提交参数呢。可以这么来,routes.MapPageRoute (“notedetail”, “note/{userid}/{noteid}”, “~/note.aspx”); 从代码里可以发现,url 里附加了2个参数,分别为 userid 和 noteid ,它们用大括号给括起来了。看起来是不是有点像存储过程里的参数呢,哈哈。这个冷笑话一点都不好玩。

回到正题,再添加了上面的代码后,如果用户访问 /note/wave/1346 ,那么会被路由到 note.aspx 这个页面里去,在页面里接收参数可以这么来使用 string userId=Page.RouteData.Values[“userid”]; 就不再是传统的 QueryString 方法了。

至此,我们就实现了在 webform 中使用 Route 的基本功能呢了。下一节,我们来进行扩展。

分类: 日常 标签: , ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.