zoukankan      html  css  js  c++  java
  • [译] ASP.NET MVC 6 attribute routing – the [controller] and [action] tokens

    原文:http://www.strathweb.com/2015/01/asp-net-mvc-6-attribute-routing-controller-action-tokens/

    当在Web API 2或者MVC 5 中使用路由属性很容易发生路由和控制器的名字不同步的情况. 这是因为路由通常就是一个字符串, 因此当改变了控制器的名字我们同时也要去修改路由属性.

    当时我们通常会忘记修改.

    在MVC 6中这个问题得到了改善 – 通过引入 [controller] 和 [action] tokens 到路由属性. 

    问题

    一个典型Web API项目的控制器代码如下:

    [Route("api/hello")]
    public class HelloController : Controller
    {
        [Route]
        public string Get()
        {
            return "hello";
        }
    }
    

    或者:

    [Route("api/hello")]
    public class HelloController : Controller
    {
        [Route("GetHello")]
        public string GetHello()
        {
            return "hello";
        }
    }
    

    在上面的两个例子中 我们通常需要手工去维护Route属性.

    MVC6的解决方案

    通过使用新的 [controller] token你可以保证你的路由和控制器的名字保持一样. 在下面的例子中, [controller] 始终保持和控制器的名字一样 – 在这个例子中Route的名字是Hello.

    [Route("api/[controller]")]
    public class HelloController : Controller
    {
        [Route]
        public string Get()
        {
            return "hello";
        }
    }
    

    [action] token – 这个应用在aciton上 保持路由名和action的名字一致.

    下面的例子中action匹配 /api/hello/GetHello/1 URL.

    [Route("api/[controller]")]
    public class HelloController : Controller
    {
        [Route("[action]/{id:int}")]
        public string GetHello(int id)
        {
            return "hello " + id;
        }
    }
    
     
     
  • 相关阅读:
    node.js入门
    分布式爬虫
    ES6入门
    Vue.js入门
    用scrapy爬取亚马逊网站项目
    垃圾回收器
    HTTP协议详解
    有效的邮箱地址
    C#中正则表达式的使用
    抽象类
  • 原文地址:https://www.cnblogs.com/irocker/p/asp-net-mvc-6-attribute-routing-controller-action-tokens.html
Copyright © 2011-2022 走看看