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