从属性中查找路线变量

时间:2019-01-22 16:39:56

标签: asp.net-core routing asp.net-mvc-routing

我想用1个路由参数自动填充ViewContext,但是有时在查询中,有时在Url中。

查询时,很容易使用req.Query.TryGetValue(key, out StringValues val)获取参数。 但是,我正在寻找一种捕获路由参数的方法,例如:

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

是否有一种方法可以在方法主体之外获取此postId值,并将其用于上面的属性中? (或在课程级别的属性中)

1 个答案:

答案 0 :(得分:1)

您可以通过继承ActionFilterAttribute使用ActionExecutingContext获取操作参数。您可以从上下文中获取所有RouteData。

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

}