• 物性路由:将路由和控制器放在一起,这样更简单方便,还可以处理复杂的路由场景
  • 传统路由:集中、强制、基于代码风格来定义的。
每个MVC应用程序都需要路由来定义自己的处理请求方式,路由是MVC是应用程序的入口点。我们先了解一下路由涉及的主要概念:路由定义是从URL模板开始的,因为它指定了与路由相匹配的模式。路由定义可以做为控制器类或操作方法的特性。路由可以指定的它的URL及其默认值,此外,它还可以约束URL的各个部分,提供关于路由如何及何时与传入的URL相匹配的严格控制。
创建一个MVC程序后,我们可以在Application_Start/RouteConfig.cs文件中。因为我们这次主要讲特性路由,所以可以先删除里面默认的所有内容,通过MapMvcAttributeRout()方法来定义。
在HomeController中随便找一个视图前面加上[route("")],我这里用的是about,定义的路由名为”aboutTest“
 
[Route("aboutTest")]
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
 
return View();
}
URL用这个访问:http://localhost:8957/ceshi
*这些URL就不要写home/ceshi了,因为我们已经定义路由,直接输入就可以访问
 
控制器路由:前面看了如何把路由特性直接添加到操作方法上,但很多时侯控制器类中的方法遵循的模式具有相似的路由特情,这里我们可以定一下action的特殊路由参数,以后该控制器下的路由就不用重复写相似的代码了
/// <summary>
/// 定义路由映射
/// </summary>
[Route("{home}/{action}")]
public class HomeController : Controller
{
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
 
return View();
}
}
当然用这种方式后,控制器上也可以添加特性路由,也是可以访问的
我们也可以使用前缀“RoutePrefix”
/// <summary>
/// 定义路由映射--使用前缀
/// </summary>
[RoutePrefix("home")]
[Route("{action}")]
这样程序会帮我们自动加上“home”控制器的前缀,两者皆支持覆盖行为,即为一个控制器指定多个路由规则:
[Route("")]
[Route("default")]
public ActionResult Index()
{
return View();
}
这两条URL都可以访问到同一个控制器
* [Route("{home}/{action}")]:用这种方式,控制器前台有指定路由,URL访问不用输入控制器的前缀例:
这两条URL访问的都是Index控制器。如果没有为控制器添加特性路由,在访问时就要添加控制器的名字(前缀)
例:http://localhost:8957/home/About 这条URL访问的是“About”控制器
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
 
return View();
}
路由约束:当我们使用带有参数的路由时,会发现如果我们想让相同的路由,不同的参数分别访问不同的控制器时,我们就要用到路由约束
[Route("ceshi/{id:double}")]
public ActionResult Test1(string id)
{
return View();
}
下面的图片是内联表,我偷个懒,切了一张图片;
 
(未完,待续)

MVC笔记--特性路由的更多相关文章

  1. MVC特性路由的提供机制

    回顾:传统路由是如何提供的? 我们知道最终匹配的路由数据是保存在RouteData中的,而RouteData通常又是封装在RequestContext中的,他们是在哪里被创建的呢?没错,回到了UrlR ...

  2. ASP.NET没有魔法——ASP.NET MVC 直连路由(特性路由)

    之前对Controller创建的分析中,知道了Controller的创建是有两个步骤组成,分别是Controller的类型查找以及根据类型创建Controller实例. 在查询Controller的类 ...

  3. asp.net mvc 特性路由(MapMvcAttributeRoutes)的应用

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012835032/article/details/51160824asp.net mvc 特性路由 ...

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

    p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; orphans: 2; widows: 2 ...

  5. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  6. ASP.NET Core MVC 配置全局路由前缀

    前言 大家好,今天给大家介绍一个 ASP.NET Core MVC 的一个新特性,给全局路由添加统一前缀.严格说其实不算是新特性,不过是Core MVC特有的. 应用背景 不知道大家在做 Web Ap ...

  7. ASP.NET Web API 2 中的特性路由

    ASP.NET MVC 5.1 开始已经支持基于特性的路由(http://attributerouting.net),ASP.NET WEB API 2 同时也支持了这一特性. 启用特性路 由只需要在 ...

  8. 【转】ASP.NET Core MVC 配置全局路由前缀

    本文地址:http://www.cnblogs.com/savorboard/p/dontnet-IApplicationModelConvention.html作者博客:Savorboard 前言 ...

  9. 005. Asp.Net Routing与MVC 之三: 路由在MVC的使用

    上次讲到请求如何激活Controller和Action,这次讲下MVC中路由的使用.本次两个关注点: 遗留:ModelBinder.BindModel的过程 MVC中路由的使用 MVC 5中的Acti ...

随机推荐

  1. easyui combobox下拉框文字超出宽度有横向滚轮

    //下拉框显示横向滚轮 $(".combo").mouseenter(function(){ $(this).prev().combobox("showPanel&quo ...

  2. SpringMVC中的Interceptor拦截器及与Filter区别

    SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...

  3. mvc输出json时报HTTP Status 406错误

    1.mvc输出json时报HTTP Status 406错误 错误纠结了2天时间,今天总与整对了,少jackson-databind引用 对于Spring 4.1.x 和以上, jackson-dat ...

  4. 《C#从现象到本质》读书笔记(四)第4章C#和面向对象

    <C#从现象到本质>读书笔记第4章C#和面向对象 面向对象程序设计OOP 面向对象的三大特性是: 1)封装:类可以将它的成员私有化,只暴露它认为应当暴露给外界的成员.通过私有化成员,外界不 ...

  5. java8新特性forEach在Map和List的应用

    转自:https://www.cnblogs.com/go-onxp/p/jdk8.html java8 forEach 在Map和List中的使用 原始的使用 Map<String, Inte ...

  6. centos 安装tmux

    安装tmux之前需要先安装一些支持的组件: yum install libevent-devel ncurses-devel 接下来就是下载源码包进行安装了,以1.6版本举例 wget http:// ...

  7. Linux学习---条件预处理的应用

    预处理的使用: ⑴包含头文件 #include ⑵宏定义 #define    替换,不进行语法检查 ①常量宏定义:#define 宏名 (宏体) (加括号为防止不进行语法检查而出现的错误) eg:# ...

  8. ABP框架系列之二十一:(Domain-Services-领域服务)

    Introduction Domain Services (or just Service, in DDD) is used to perform domain operations and busi ...

  9. Struts2学习第三天——保存登陆信息及数据校验

    在JSP中服务器端保存数据的作用域通常有request.session.application,它们对应的Servlet API分别是HttpServletRquerst.HttpSession.Se ...

  10. JQuery对checkbox的操作

    对复选框组的全选.全不选.不全选,获取选中的复选框的值的操作 点击全选按钮,复选框组全部选中或者全部取消. 实现全选按钮和复选框组的联动,当复选框组中有一个没有被选中后,那么id=‘checkedAl ...