属性路由未在路由数据中获取索引操作

Attribute routing not picking up index action in routedata

我有以下 MVC 控制器:

[RoutePrefix("our-brochure")]
[Route("{action=index}")]
public class OurBrochureController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

效果很好 - 如果我转到 http://localhost/our-brochure 它会转到索引页面并按预期加载它

但是,对于我的导航,我有一个 NavModel 可以使用以下代码计算出当前控制器和操作:

var httpContext = new HttpContextWrapper(HttpContext.Current);
var routeData = System.Web.Routing.RouteTable.Routes.GetRouteData(httpContext);

var controllerName = routeData.Values["controller"].ToString();
var actionName = routeData.Values["action"].ToString();

这给了我正确的控制器名称 "OurBrochure" 但 routeData.Values["action"] 是空的。

这是预期的行为吗,因为我认为我会得到 "Index" 作为路由数据中的操作。如果这是预期的行为,您如何获得当前的操作名称?

我的问题已经解决了,不用上面的方法获取RouteData,直接从Current Context中获取即可:

HttpContext.Current.Request.RequestContext.RouteData.Values["action"].ToString()