关于asp.net中路由的配置的几个类(asp.net路由配置1)

一:RouteDataMSDN的解释是:包含所请求路由的相关值。包含你设置的路由模式的所有参数值。
讲下RouteData的几个属性:
1:DataTokensMSDN的解释--获取在asp.net路由确定路由是否匹配时,传递到路由处理程序但未使用的自定义的集合..
 也就是说获得的是你配置路由的路由名称,符合当前路由的路由名称。
代码是最能说明问题的证据如下:定义如下路由
 routes.MapPageRoute("CompanySite_Detail", "{Path1}/{Id}",
                "~/Default.aspx",
                false,
                new RouteValueDictionary {  { "Path1", "Default" }, { "Path2", "" } },
                new RouteValueDictionary { { "Path1", "Default" }, { "Id", @"\d+" } });
在请求/44/Default这个路径时符合上面所定义的路由,使用Page.RouteData.DataTokens获得一个集合RouteValueDictionary,查看value值就是"CompanySite_Detail"。

2:Route MSDN解释--获取或设置表示路由的对象。也就是你配置的那路由的所有信息。
 RouteBase r = this.Page.RouteData.Route;返回的是一个RouteBase对象。关于RouteBase请查看MSDN
 http://msdn.microsoft.com/zh-cn/library/system.web.routing.routebase.aspx

3:RouteHandler MSDN解释--返回的是处理路由的对象。这就像我们的IhttpHander一样。对IhttpHander的解析可以看Fish Li写的
 http://www.cnblogs.com/fish-li/archive/2011/09/05/2168073.html已经写的非常完美我就不关公前卖弄了。

4:Values 经常用到非常重要的一个属性MSDN解释--获取路由的 URL 参数值和默认值的集合。这个解释很好理解就是好的你这只的路由的所有参数
 this.Page.RouteData.Values["Id"].ToString();
 这里就是获取参数Id的值。RouteData.Values的返回值同样是一个集合RouteValueDictionary里面包含path1和path2

二:RouteTable类MSDN解释--存储应用程序的 URL 路由。主要用在在global.asax.cs文件中将所有路由注册入程序中。
 
1:属性Routes这个是个集合,是个RouteCollection类型。可以将程序中所有路由添加到次集合中。
 Routes有个中要的方法:Routes.MapPageRoute(string routeName, string routeUrl, string physicalFile, bool checkPhysicalUrlAccess, RouteValueDictionary defaults, RouteValueDictionary constraints);
 此方法有五个重写的方法,参数1是路由名称,参数2是路由的模式,参数3是文件的物理路径即请求的页面路径,参数4是一个值,该值指示 ASP.NET 是否应验证用户是否有权访问物理 URL(始终会检查路由 URL)。 此参数设置 System.Web.Routing.PageRouteHandler.CheckPhysicalUrlAccess,参数5是给相应的参数设置默认值,参数6是设置请求的参数的条件
      

三:Page对象的一个使用路由的重要方法GetRouteUrl(string routeName, RouteValueDictionary routeParameters);这个方法是获取相关路由的相关方法
 参数1是你设置的路由的的名称,参数2是给路由的相关参数设置相应的值。
 
看如下例子:
 
 void Application_Start(object sender, EventArgs e)
        {
          
            //注册所有的您设置的所有的路由规则,以便请求相应路径时去对应相应的规则,RouteTable类存储了所有规则的URL的路径,
            //RouteTable.Routes的是一个集合RouteCollection,存储了所有的用户定义的路由规则,写在Application_Start方法中的原因是将所有的路由     //  规则注册到程序中
            RegisterRoutes(RouteTable.Routes);

        }

  public static void RegisterRoutes(RouteCollection routes)
        {
            //定义一个路由规则当请求/Default/+数字时就是请求defaut页面
            routes.MapPageRoute("CompanySite_Detail", "{Path1}/{Id}",
                "~/Default.aspx",
                false,
                new RouteValueDictionary {  { "Path1", "Default" }, { "Path2", "" } },
                new RouteValueDictionary { { "Path1", "Default" }, { "Id", @"\d+" } });

        }

 在aspx.cs文件中可以这样获参数Id
  string ss = this.Page.RouteData.Values["Id"].ToString();//获得参数Id可以根据ss到数据库去查询相关内容。

 在页面上即aspx.cs后台上可以这样写HyperLink2.NavigateUrl=Page.GetRouteUrl("CompanySite_Detail",new {Path1="Default",Path2=11});给已个HyperLike设置跳转路径是/defaut/44页面。

这样一个路由就完成,写的不对的地方请各位大侠拍砖!!!!!!!!!!

原文地址:https://www.cnblogs.com/Minghao_HU/p/2675302.html