我有以下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"]
为空。
这是预期的行为,因为我认为我会将“索引”作为路线数据中的动作。如果这是预期的行为,您如何获得当前的操作名称?
答案 0 :(得分:1)
我已经解决了我的问题,而不是使用上述方法获取RouteData
,您可以直接从当前上下文中获取它:
HttpContext.Current.Request.RequestContext.RouteData.Values["action"].ToString()