zoukankan      html  css  js  c++  java
  • MVC笔记--特性路由

    • 物性路由:将路由和控制器放在一起,这样更简单方便,还可以处理复杂的路由场景
    • 传统路由:集中、强制、基于代码风格来定义的。
    每个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();
    }
    下面的图片是内联表,我偷个懒,切了一张图片;
     
    (未完,待续)
  • 相关阅读:
    WebUploader在IE9中文件选择按钮点击没反应
    nagios二次开发(四)---nagios监控原理和nagios架构简介
    nagios二次开发(三)---nagiosql架构简介
    nagios二次开发(二)---nagios和nagiosql合并与取舍
    Icinga快速安装与配置
    shell-自动更改LINUX服务器IP
    nginx环境下配置nagios-关于nagios配置文件nginx.conf
    nginx环境下配置nagiosQL-关于nagiosql配置文件
    nginx环境下配置nagios-关于start_perl_cgi.sh
    Scala学习(八)---Scala继承
  • 原文地址:https://www.cnblogs.com/c546170667/p/7101084.html
Copyright © 2011-2022 走看看