asp.net mvc 路由功能

来源:互联网 发布:ubuntu如何挂载磁盘 编辑:程序博客网 时间:2024/06/08 06:41


一:默认显示area下某个文件

[csharp] view plain copy
  1. routes.MapRoute(  
  2.                name: "Default",  
  3.                url: "{controller}/{action}/{id}",  
  4.                defaults: new { controller = "Main", action = "Index", id = UrlParameter.Optional }  
  5.            ).DataTokens.Add("area""EnWeb");//默认area 的控制器名称       

http://blog.csdn.net/kai161/article/details/19189681

Area下面会生成一个映射文件EnWebAreaRegistration


二:routes是满足url规则则会执行上面对应,先在上面先匹配

   

    1:url为空默认执行

[csharp] view plain copy
  1. routes.MapRoute(  
  2.             name: "AA",  
  3.             url: "",  
  4.             defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }  
  5.             );    
     此时如何url为空会执行Login控制器下Index方法


    2 控制器+参数的url格式,无需传action  

[csharp] view plain copy
  1. routes.MapRoute(  
  2.             name: "BB",  
  3.             url: "{controller}/{id}",  
  4.             defaults: new { controller = "CompanysLog", action = "Index", id = UrlParameter.Optional }  
  5.             );      
    此时只要满足{controller}/{id}这种url格式就会执行

    CompanysLog/Index

    url规则写死也行,写死可以防止有些规则重复

[csharp] view plain copy
  1. routes.MapRoute(  
  2.            name: "MM",  
  3.            url: "{CompanysLog}/{id}",  
  4.            defaults: new { controller = "CompanysLog", action = "Index", id = UrlParameter.Optional }  
  5.            );      
     这时url必须是CompanysLog/XXX 这种格式才会执行配置的控制器与Action

      3:

使用{*catchall}捕捉超出数量的segment


例如,对于这条route:


routes.MapRoute("MyRoute","{controller}/{action} /{*catchall}",
new { controller = "Home", action ="Index",
id = UrlParameter.Optional });
由于使用了{*catchall},对于url:


http://mysite/Home/Index/All/More/More/More


此时,controller=Home,Action=Index, catchall=”All/More/More/More”


这样,就把解析剩下segment的工作交给了自己处理

 

三:返回某个页面

areas下面views


或者直接的views

 return View("~/Views/Price/AirPrice.cshtml");


四:隐藏controller,一级目录访问

   

    匹配前缀:

     routes.MapRoute(
            name: "AA",
            url: "{action}",
            defaults: new { controller = "Home", action = "Index" },
            constraints: new { action = "^H.*" }
            );

      这里凡是是H开头的ation默认的controller就是home

        routes.MapRoute(
                name: "BB",
                url: "{action}",
                defaults: new { controller = "Test", action = "Index" },
                constraints: new { action = "^A.*" }
                );

      同理以A开头的ation默认的controller就是Test  

   匹配后缀:

       routes.MapRoute(
            name: "AA",
            url: "{action}",
            defaults: new { controller = "Price", action = "fclfreight" },
            constraints: new { action = "^.*freight" }
            );

       匹配以freight结尾的调用名称为price的controller



http://www.tuicool.com/articles/NjEfIrY


一:默认显示area下某个文件

[csharp] view plain copy
  1. routes.MapRoute(  
  2.                name: "Default",  
  3.                url: "{controller}/{action}/{id}",  
  4.                defaults: new { controller = "Main", action = "Index", id = UrlParameter.Optional }  
  5.            ).DataTokens.Add("area""EnWeb");//默认area 的控制器名称       

http://blog.csdn.net/kai161/article/details/19189681

Area下面会生成一个映射文件EnWebAreaRegistration


二:routes是满足url规则则会执行上面对应,先在上面先匹配

   

    1:url为空默认执行

[csharp] view plain copy
  1. routes.MapRoute(  
  2.             name: "AA",  
  3.             url: "",  
  4.             defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }  
  5.             );    
     此时如何url为空会执行Login控制器下Index方法


    2 控制器+参数的url格式,无需传action  

[csharp] view plain copy
  1. routes.MapRoute(  
  2.             name: "BB",  
  3.             url: "{controller}/{id}",  
  4.             defaults: new { controller = "CompanysLog", action = "Index", id = UrlParameter.Optional }  
  5.             );      
    此时只要满足{controller}/{id}这种url格式就会执行

    CompanysLog/Index

    url规则写死也行,写死可以防止有些规则重复

[csharp] view plain copy
  1. routes.MapRoute(  
  2.            name: "MM",  
  3.            url: "{CompanysLog}/{id}",  
  4.            defaults: new { controller = "CompanysLog", action = "Index", id = UrlParameter.Optional }  
  5.            );      
     这时url必须是CompanysLog/XXX 这种格式才会执行配置的控制器与Action

      3:

使用{*catchall}捕捉超出数量的segment


例如,对于这条route:


routes.MapRoute("MyRoute","{controller}/{action} /{*catchall}",
new { controller = "Home", action ="Index",
id = UrlParameter.Optional });
由于使用了{*catchall},对于url:


http://mysite/Home/Index/All/More/More/More


此时,controller=Home,Action=Index, catchall=”All/More/More/More”


这样,就把解析剩下segment的工作交给了自己处理

 

三:返回某个页面

areas下面views


或者直接的views

 return View("~/Views/Price/AirPrice.cshtml");


四:隐藏controller,一级目录访问

   

    匹配前缀:

     routes.MapRoute(
            name: "AA",
            url: "{action}",
            defaults: new { controller = "Home", action = "Index" },
            constraints: new { action = "^H.*" }
            );

      这里凡是是H开头的ation默认的controller就是home

        routes.MapRoute(
                name: "BB",
                url: "{action}",
                defaults: new { controller = "Test", action = "Index" },
                constraints: new { action = "^A.*" }
                );

      同理以A开头的ation默认的controller就是Test  

   匹配后缀:

       routes.MapRoute(
            name: "AA",
            url: "{action}",
            defaults: new { controller = "Price", action = "fclfreight" },
            constraints: new { action = "^.*freight" }
            );

       匹配以freight结尾的调用名称为price的controller



http://www.tuicool.com/articles/NjEfIrY


原创粉丝点击