![](/img/trans.png)
[英]Asp.net Web API RouteTemplate for passing multiple parameters to a method
[英]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.