属性路由未选取路由数据中的索引操作



我有以下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();

这给了我正确的控制器名称"我们的手册",但routeData.Values["action"]为空。

这是预期的行为,因为我认为我会将"索引"作为路由数据中的操作。 如果这是预期行为,如何获取当前操作名称?

我已经

解决了我的问题,而不是使用上述方法获取RouteData,您可以直接从当前上下文中获取它:

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

最新更新