簡體   English   中英

如何在ASP.NET Web API 2中獲取自定義RouteTemplate屬性的值?

[英]How do I get the value of a custom RouteTemplate attribute in ASP.NET Web API 2?

我想創建一個看起來像這樣的自定義路由配置:

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

我需要有一個location屬性,該屬性將包含一個表示特定API用戶位置的整數ID。

之后,我將在控制器級別放置一個自定義屬性,如下所示:

[VerifyLocation]
public class SomeController : ApiController

這會對傳遞給每個端點的位置值進行一些背景驗證。 這意味着我需要能夠獲取location屬性的整數值。

我知道您可以使用Route屬性來自定義您的路線,但是要做的是不必在所有路徑上都放置[Route("api/{location:id}/{id:int"}]我的終點。

我該怎么做呢?

(以防有人偶然發現了這個問題)

一種方法是通過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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM