【问题标题】:How do I get the value of a custom RouteTemplate attribute in ASP.NET Web API 2?如何在 ASP.NET Web API 2 中获取自定义 RouteTemplate 属性的值?
【发布时间】:2014-11-07 19:17:36
【问题描述】:

我想创建一个如下所示的自定义路由配置:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{location}/{id}",
    defaults: new { id = RouteParameter.Optional }

我需要一个 location 属性,其中包含一个整数 id,表示特定 API 用户的位置。

之后,我将在控制器级别放置一个自定义属性,例如:

[VerifyLocation]
public class SomeController : ApiController

它对传递给每个端点的位置值进行一些后台验证。这意味着我需要能够获取location 属性的整数值。

我知道您可以使用 Route 属性来自定义您的路线,但要做到这一点,而不必在我的所有端点上输入 [Route("api/{location:id}/{id:int"}]

我该怎么做呢?

【问题讨论】:

    标签: rest asp.net-web-api2 asp.net-web-api-routing


    【解决方案1】:

    (以防有人偶然发现这个问题)

    一种方法是通过ActionFilterAttribute

    public class VerifyLocation : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            var routeData = actionContext.RequestContext.RouteData;
    
            var location = routeData.Values["location"];
    
            // Do your thing here
    
            base.OnActionExecuting(actionContext);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-01-01
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 2016-12-15
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多