mvc 路由 使用

url 特性路由: 特性路由可以在 controller和action里面自定义路由规则  这种方式比较灵活  缺点就是不能很好的统一管理url

注册特性路由:

 1 public static void RegisterRoutes(RouteCollection routes)
 2         {
 3             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 4
 5             routes.MapMvcAttributeRoutes();//注册特性路由
 6
 7             routes.MapRoute(
 8                 name: "Default",
 9                 url: "{controller}/{action}/{id}",
10                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
11             );
12         }
13     //在控制器上使用路由特性  action里面就可以省略 controller
14     [RoutePrefix("home")]
15     public class HomeController : Controller
16     {
17         public ActionResult Index()
18         {
19             return View();
20         }
21         //特性路由
22         //url  http://localhost:17749/home/order/2
23         //page  数据格式验证
24         [Route("home/order/{page:int}")]
25         public ActionResult OrderList(int page)
26         {
27             ViewBag.PageIndex = page;
28             return View();
29         }

2.传统路由  传统路由可以集中配置路由规则,程序以后的维护比较方便

 1         public static void RegisterRoutes(RouteCollection routes)
 2         {
 3             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 4
 5             routes.MapMvcAttributeRoutes();//注册特性路由
 6             //自定义名称  必须在默认路由之前
 7             routes.MapRoute(
 8                 "Order",
 9                 "order/{id}",
10                 new { controller = "Order", action = "Details", id = UrlParameter.Optional },
11                 new { id = @"\d" }
12             );
13
14             routes.MapRoute(
15                 name: "Default",
16                 url: "{controller}/{action}/{id}",
17                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
18             );
19
20         }
21
22
23
24     [RoutePrefix("order")]
25     public class OrderController : Controller
26     {
27         //特性路由
28         [Route("")]
29         [Route("list/{page:int?}")]
30         public ActionResult Index(int page = 1)
31         {
32             ViewBag.PageIndex = page;
33             return View();
34         }
35         //传统路由
36         public ActionResult Details(int id)
37         {
38             ViewBag.Id = id;
39             return View();
40         }
41     }

    

  

<a href="@Url.RouteUrl("Order",new { id = 1 })" target="_blank">Order Details 1</a>
<a href="@Url.RouteUrl("Order",new { id = 2 })" target="_blank">Order Details 2</a>

时间: 2024-11-03 05:27:05

mvc 路由 使用的相关文章

ASP.NET Core中使用默认MVC路由

ASP.NET Core里Route这块的改动不大,只是一些用法上有了调整,提供了一些更加简洁的语法. 而对于自定义路由的支持当然也是没有问题的,这个功能应该是从MVC1.0版本就已经有这个功能. 先看看ASP.NET Core里面实现默认MVC路由的配置方式 通常情况下,在使用MVC项目的时候,默认的路由就足够了,就是常见的通过Controller和Action获取具体的方法的方式. 从一个最基本的项目开始,执行以下步骤,就可以使得项目支持MVC路由 1.创建一个空白的ASP.NET Core

[Buffalo]ASP.NET MVC路由映射

Asp.Net的路由系统旨在通过注册URl模版与物理文件之间的映射进而实现请求地址与文件路径之间的分离,但对于Asp.Net Mvc应用来说,请求的目标却是定义在某个Controller类型中的Action方法. 为了实现针对目标Controller和Action的路由,Asp.Net Mvc在System.Web.Mvc.RouteCollectionExtensions中针对RouteConllection类型定义了一系列的扩展方法以实现文件路径无关的路由映射.其中的两组方法,Ignore用

ASP.NET MVC - 路由系统

ASP.NET MVC的请求URL不再对应于传统ASP.NET程序的ASPX文件物理地址,而是把请求映射到一个控制器(Controller)类的方法(Action)上,Controller.Action再加上参数构成ASP.Net MVC请求的Url.下面我们来看下路由系统的主要对象. UrlRoutingModule ASP.NET MVC框架的路由实质是从传统ASP.NET管道扩展HttpModule而来,这个模块正是UrlRoutingModule.通过反编译可以看到UrlRoutingM

MVC路由中的一个问题

最近项目在使用MVC. 项目中有个地址为:www.xxx.com/search/search.html,从这个页面点击QQ登录时,地址为:www.xxx.com/passport/QQLogin.html?returl=/search/search.html 此时,QQ登录总是不成功. 但是同样的情况,如果把页面换成www.xxx.com/search/s.html,从这个页面点击QQ登录时,地址为:www.xxx.com/passport/QQLogin.html?returl=/search

MVC路由自定义及视图找寻规则

这篇关于MVC路由及视图规则本来是昨天要发的,但是本人真的有点懒,终于今天忍无可忍了.初学MVC的时候比现在还菜一点(现在也很菜),想着会用就行,但是有时还是会好奇,为什么它能找到控制器?为什么控制器return View();就能找到视图,而为什么视图一定要建在Views文件下?好像说的有点多了,接下来一边上例子,一边分析! MVC路由自定义 相信对于MVC路由的配置大家也都了解过一些,其实,这也不是本章的重点. 创建MVC项目的时候,根目录下>>App_Start>>Route

ASP.NET MVC路由系统的核心对象介绍

众所周知,ASP.NET MVC有一套自己的路由系统.这套路由系统是在原来的ASP.NET 路由系统上扩展过来的.今天这篇文章就来聊聊MVC路由系统中非常关键的一些对象. ASP.NET MVC路由系统主要由以下几个核心对象:         1.RouteCollection(RouteCollextionExtentions)         2.RouteTable         3.RouteData         4.Route:RouteBase         5.URLRou

ASP.NET MVC路由(二)

 ASP.NET MVC路由(二) 前言 在上一篇中,提及了Route.RouteCollection对象的一些信息,以及它们的结构所对应的关系.按照处理流程走下来还有遗留的疑问没有解决这个篇幅就来讲解一下. URL规则的生成 Url规则看名字挺吓唬人的,其实就是根据我们自定义的Url来解析出一个模式,然后等待请求的Url来的时候,跟我们定义的模式进行匹配(如下图).这是后续的内容. 在上篇中说到URL规则的定义是在Route对象中的,下面来讲解在Route对象中怎么根据用户注册的URL转变成U

MVC路由机制(转)

今天我来缕一下MVC的路由机制,因为使用MVC已经快一年了,之前也只是上手,没有系统去理会.项目完了,结合实际使用,回过头来深入一下. MVC 学习索引(点击即可) 一个请求进入IIS后 传统ASP.NET 路由部分 1.IIS根据文件类型将请求转交给相应的处理程序,如果属于ASP.NET文件,则将请求转发给aspnet_isapi.dll.(注:在II6和IIS7上的处理方式是有区别的) 2. HTTP处理模块UrlRoutingModule接收到请求后,循环调用其RouteCollectio

MVC路由探寻,涉及路由的惯例、自定义片段变量、约束、生成链接和URL等

引子 在了解MVC路由之前,必须了解的概念是"片段".片段是指除主机名和查询字符串以外的.以"/"分隔的各个部分.比如,在http://site.com/Home/Index中,包含2个片段,第一个片段是Home,第二个片段是Index. URL匹配的特点:● 保守的:URL中的片段数量必须和路由规则中的片段数量一致(路由规则没有设置默认值的前提下)● 宽松的:在满足片段数要求的前提下,URL中的片段内容是宽松的 本篇涉及的方面包括:1.路由惯例2.自定义片段变量3

ASP.NET MVC 路由(四)

ASP.NET MVC 路由(四) 前言 在前面的篇幅中我们讲解路由系统在MVC中的运行过程以及粗略的原理,想必看过前面篇幅的朋友应该对路由有个概念性的了解了,本篇来讲解区域,在读完本篇后不会肯定的让你对区域有彻底的了解,但是会让你在以后对这部分知识掌握的路上夯上厚实的基础. 区域 在路由的起初在按照VS环境新建的MVC项目来讲的,今天区域也是按照这样的套路来讲.MSDN上说,在大型项目使用中被MVC划分为较小单元也就是区域,我没有使用过区域的经验,所以这篇只能讲解它的对象模型以及粗略的原理.