MVC中url路由规则

Routing:首先获取视图页面传过来的请求,并接受url路径中的controller和action以及参数数据,根据规则将识别出来的数据传递给某controller中的某个action方法

MapRoute()有6个方法可以重载

方法1:系统提供的默认路由规则格式

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",//路由名称
                url: "{controller}/{action}/{id}",//带有参数的url
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }//参数默认值
            );
        }

url格式为:http://localhost:0000/Home/Index 对于规则为{controller}/{action}/{id} 黑色部分就是对应部分

详细匹配为:http://localhost:0000/Home/Index/1  通过Routing组件分析该url  controller为Home  action为Index 参数为Id为1 使用了MapRoute( string name, string url, object defaults);这个方法的重载。

方法:2:不使用默认值的url路由规则

函数头:MapRoute( string name, string url);

 routes.MapRoute("没有默认值路由规则", "{controller}/{id}-{action}");

适合的Url例子:http://localhost:0000/Custom/1-Detials  

它将不匹配http://localhost:0000/

方法3:带有命名空间的Url路由规则

 函数头:MapRoute( string name, string url, string[] namespaces);//路由名,Url规则,名称空间

routes.MapRoute(

"myurl",//路由名称

"{controller}/{id}-{action}",//带有参数的url

new{controller="Home",action="Index",id=UrlParameter.Optional},//参数默认值

new string[]{"mymvc.Controllers"}//命名空间

);

Url:http://localhost:0000/Custom/1-Detials

这个例子是带命名空间的路由规则,这在Aeras使用时非常有用。

方法4:带有约束的路由规则

函数头:MapRoute( string name, string url, object defaults, object constraints);//路由名,Url规则,默认值,名称空间

routes.MapRoute(
               
"Rule1",
               
"{controller}/{action}-{Year}-{Month}-{Day}}",
               
new { controller = "Home", action = "Index", Year = "2010", Month =
"04", Day = "21" },
               
new { Year = @"^\d{4}", Month = @"\d{2}" }
           
);

Url:http://localhost:14039/home/index-2010-01-21

方法5:带有命名空间,约束,待默认值的路由规则

函数头:MapRoute( string name, string url, object defaults, object constraints, string[] namespaces);

routes.MapRoute(
               
"Rule1",
               
"Admin/{controller}/{action}-{Year}-{Month}-{Day}",

new { controller = "Home", action = "Index", Year = "2010", Month =
"04", Day = "21" },
               
new { Year = @"^\d{4}", Month = @"\d{2}" },
               
new string[] { "MvcDemo.Controllers" }
           
);

Url:http://localhost:14039/Admin/home/index-2010-01-21

方法6:捕获所有的路由

routes.MapRoute(
               
"All", // 路由名称
               
"{*Vauler}", // 带有参数的 URL
               
new { controller = "Home", action = "Index", id =
UrlParameter.Optional } // 参数默认值
           
);

关于Global.asax剩余部分的说明:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");是忽略这个规则的Url

   AreaRegistration.RegisterAllAreas();//注册所有的Areas
      
RegisterRoutes(RouteTable.Routes);//注册我们写的规则
      
//RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);//调试用语句,需要下载RouteDebug.dll,并添加引用!加入这句话后就可以测试Url路由了。

时间: 2024-10-12 13:23:01

MVC中url路由规则的相关文章

MVC的URL路由规则

Routing的作用:它首先是获取到View传过来的请求,并解析Url请求中Controller和Action以及数据,其次他将识别出来的数据传递给Controller的Action(Controller的方法).这是Routing组件的两个重要的作用! 下面我们从几个例子来讲解一下Url路由的使用. MapRoute()有6个方法可以重载,下面举5个例子相应介绍! 实例一:首先讲解的是系统默认提供的路由格式,下面是系统给的默认代码: public static void RegisterRou

MVC中URL传多个参数

1.mvc中url传递多个参数不能直接使用&,会报错(从客户端(&)中检测到有潜在危险的 Request.Path 值) 方法①:使用?---/Home/Index/?id=xxx&name=xxx(js:"/MsgTypeTem/Edit/?id=" + temId + "&flag=" + Math.random()) 方法②:修改路由规则--- routes.IgnoreRoute("{resource}.axd/{*

MVC中的路由

authour: chenboyi updatetime: 2015-05-02 16:10:04 friendly link:   目录 1,思维导图 2,MVC处理机制简图(讲解路由解析) 3,默认路由规则 4,忽略路由 5,路由规则参数约束 6,命名空间约束 7,利用RouteDegger.dll来查看匹配的路由 1,思维导图: 2,MVC处理机制简图(讲解路由解析): 3,默认路由规则 在项目的App_Start文件夹下的RouteConfig.cs中进行修改 1 //MVC默认的路由规

URL路由规则实例

1.设置支持路由和写路由规则 2.控制器中这样来写 3.测试结果: URL路由规则实例

.Net MVC中的路由

MVC中的URL也就是路由,不用通过路径访问实际的物理文件而达到向用户展示界面. URL的路由功能 一方面正向 映射到Controller和Action,根据用户输入的URL触发相应的控制器和对应方法,另一方面则反向映射并构造出URL,根据控制器和行为构造出URL以供程序调用. 系统首次启动将会加载Global.asax文件的Application_Start方法并去执行RegisterRoutes()构造器 protected void Application_Start() { AreaRe

.NetCore MVC中的路由(2)在路由中使用约束

.NetCore MVC中的路由(2)在路由中使用约束 0x00 路由模板中的约束 在配置路由模板时,除了以静态字符和变量的形式外,还可以通过配置对变量进行约束.实际如果不嫌麻烦的话在路由到的Action中对变量进行检查也是一种方法,不过对于变量的通用的约束当然是放在路由层面更加合适.而且这样做会简化Action的代码,使Action更加专注于自身业务,符合AOP的思路.这篇文章主要介绍路由模板中的约束. 0x01 在路由模板中使用约束 在路由模板中使用约束是很简单的,如下所示: {contro

ASP.NET MVC 中的路由

普通的路由 在以前版本的ASP.NET MVC里,这些规则会被定义在RouteConfig.cs文件,也有Routing Assistant扩展可以实现基于特性的路由,不过是收费滴,另外还有一个扩展:http://attributerouting.net/ ,也很不错:理论上ASP.NET MVC 中要实现任意的规则URL 应该是没有问题的. 比如配置的酒店详情页路由 //HOTEL DETAIL routes.MapRoute(name: "HotelDetail", url: &q

ASP.NET MVC教程五:ASP.NET MVC中的路由

一.概述 在ASP.NET MVC架构中,控制器在3大核心构件中处于中心地位,通过控制器支配模型和视图,然而从浏览器发出的请求到控制器还需要路由的协助,路由将特定的请求和控制器的动作对应起来. 在ASP.NET MVC程序中,路由主要有两方面的职责: 与入站的请求相匹配,将这些请求映射到控制器的动作中. 构造出站的URL,这些URL可以响应控制器的动作. 二.路由原理 1.注册路由 先看Global.asax中的代码: 网站启动的时候执行Application_Start方法,通过RouteCo

ASP.NET MVC 的URL路由介绍

在这个教程中,向你介绍每个ASP.NET MVC一个重要的特点叫做URL路由.URL路由模块是负责映射从浏览器请求到特定的控制器动作. 在教程的第一部分,你将学习标准路由表如何映射到控制器的动作.在教程第二部分,你将学习如何修改默认路由表成为自定义路由. 使用默认路由表 当你创建一个新的ASP.NET MVC 应用程序,应用程序已经配置了默认的URL路由.URL路由在两个地方设置. 第一,URL路由配置在你的应用程序WEB配置文件中(Web.config文件).文件中有四个有关路由的配置 节:s