zoukankan      html  css  js  c++  java
  • 关于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页面。

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

  • 相关阅读:
    连续子数组的最大和
    最小的K个数
    数组中出现次数超过一半的数字
    字符串的排列
    二叉搜索树与双向链表
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉搜索树的后序遍历序列
    Xcode5下去除Icon高光
    Unity3D-基本导航(NavMesh)功能实现
  • 原文地址:https://www.cnblogs.com/Minghao_HU/p/2675302.html
Copyright © 2011-2022 走看看