高防服务器

ASP.NET4中的URL Routing怎么使用


ASP.NET4中的URL Routing怎么使用

发布时间:2021-12-06 15:46:33 来源:高防服务器网 阅读:99 作者:iii 栏目:编程语言

这篇文章主要介绍“ASP.NET4中的URL Routing怎么使用”,在日常操作中,相信很多人在ASP.NET4中的URL Routing怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ASP.NET4中的URL Routing怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

什么是URL Routing

首先,URL routing其实在ASP.NET 5 SP1中就被引入了,但是介于之前一直没有用到,况且微软的很多关于ASP.NET 4的介绍都把这作为一新的功能,因此就把题目取为这个吧。
之前,一个典型的ASP.NET的URL通常如下http://www.myexample.com/salesreport.aspx?year=2009

在这个URL中的salesreport.aspx代表的是一个真实存在的物理文件,后缀.aspx在url中的存在不仅完全没有意义,而且使得这个url不是SEO-friendly的。而使用URL Routing之后,我们就可使用如下更简洁明了的地址来访问了,http://www.myexample.com/salesrepot/2009

使用Route Engine进行URL Mapping

在asp.net mvc中,通过MapRoute将url映射到相应的controller和action, 而在web form中,在Global.assx的Application_Start中,我们通过MapPageRoute来将url映射到一个页面上

void RegisterRoutes(RouteCollection routes)   {      routes.MapPageRoute("SalesRoute", "SalesReport/{year}", "~/sales.aspx");                                  }

MapPageRoute这里使用了三个参数,***个是给这个Route的命名,第二个是这个URL的映射Pattern, 而***一个就是对应的ASPX页面。除了这个最常用直接的方法之外,还可以使用其重载的其它方法,来个route设置default值,添加各种约束条件,如下面的这一个

void RegisterRoutes(RouteCollection routes)   {    routes.MapPageRoute("SalesRoute",                           "SalesRoute/{year}",                             "~/sales.aspx", true,                          new RouteValueDictionary{                               { "year", DateTime.Now.Year.ToString()}},                                                                    new RouteValueDictionary{                              { "year", @"d{4}" } });   }

相比于***个route,这个多了三个参数,***个为boolean值,后面两个为RouteValueDictionary, 其中***个就指定了一个default值,而***一个就是一个约束,通过正则表达式约束了参数year必须是四位的数字。

在将SalesRoute/2009成功的映射到sales.aspx页面之后,如何在sales的code中获取这个“2009"值呢?通过Page类的RouteData来获取

protected void Page_Load(object sender, EventArgs e)   {       string year = RouteData.Values["year"] as string;                                                    }

使用Routing Engine生成URL

除了解析URL之外,我们同时可以生成这些简洁明了的URL, 如下面的代码

RouteValueDictionary parameters = new RouteValueDictionary   {   { "year", "2008" },   { "category", "recreation" }  };    VirtualPathData vpd = RouteTable.Routes.GetVirtualPath(null, "SalesRoute", parameters);                      hyperLnk.NavigateUrl = vpd.VirtualPath;

这里的SalesRoute就是我们在Application_Start中注册过的那个Route。 值得注意的是,在SalesRoute的Pattern中,我们并没有”{category}”,那么RouteEngine怎么处理这个值呢?这时,category就为被作为一个querystring添加到url中,生成的URL将会是这样的:http://www.myexample.com/salesreport/2009?category=recreation

此外,如果在这个sales页面上加一个button,这个button对应的url会不会也会如上面的url那样简洁呢?答案是肯定的。但是是通过在Form标签中,指定Action来实现页面的回发。

到此,关于“ASP.NET4中的URL Routing怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注高防服务器网网站,小编会继续努力为大家带来更多实用的文章!

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[