.NET MVC 获取路由模板



>假设我有一个带有路由模板的控制器/users/{userId}/profilePhoto

假设一个用户访问/users/123/profilePhoto,另一个用户访问/users/444/profilePhoto

有什么方法可以找到用于解决该请求的路由模板(/users/{userId}/profilePhoto(?例如,是否可以从HttpContext中读取它?

在控制器操作方法中:

((Route)RouteData.Route).Url

RouteData是控制器上的属性。 它有一个类型为 RouteBaseRoute 属性,它应该可强制转换为 Route有一个包含模板的 Url 属性。

从控制器操作方法外部,您可以执行相同的操作,但首先需要获取当前请求上下文:

((Route)HttpContext.Current.Request.RequestContext.RouteData.Route).Url;

要在操作方法中获取当前使用的路由,您可以简单地执行以下操作:

public ActionResult Index()
{
    var route = this.RouteData.Route;
    return View();
}

this解析为电流控制器,可以省略。我只是把它留在那里提醒自己当前的范围。

最新更新