Найти переменные маршрута из атрибута - PullRequest
0 голосов
/ 22 января 2019

Я хотел бы автоматически заполнить ViewContext с 1 параметром маршрутов, однако иногда он находится в запросе, иногда в URL.

В запросе параметр легко получить с помощью req.Query.TryGetValue(key, out StringValues val).Однако я ищу способ захвата параметра маршрута, когда он выглядит так:

[PrefillViewContext("postId")]
[HttpGet("/Post/{postId}")]
public IActionResult DisplayPost(Guid postId) {}

Есть ли способ получить это значение postId вне тела метода и использовать его в атрибутечуть выше?(или в атрибуте на уровне класса)

1 Ответ

0 голосов
/ 23 января 2019

Вы можете получить параметры действия, используя ActionExecutingContext , унаследовав ActionFilterAttribute. Вы можете получить все RouteData из контекста.

public class PrefillViewContextAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        var postId = context.ActionArguments["PostId"];
    }

}
...