我正在尝试将当前路线放入导航控制器中,以便在填充导航菜单数据时可以运行比较。
我的链接对象是这样的:
public class StreamNavLinks
{
public string Text { get; set; }
public RouteValueDictionary RouteValues { get; set; }
public bool IsSelected { get; set; }
}
在母版页中,我尝试将当前路线传递给导航控制器,如下所示:
<% Html.RenderAction(
"MenuOfStreamEntries", // action
"Nav", // controller
new { // parameters for action
currentStreamUrl = "Blog",
currentRoute = ViewContext.RouteData } // get route data to compare in controller
); %>
我遇到的问题是我不知道如何从中获取任何数据currentRoute
。获取值的最佳技术是什么或currentRoute
?
我尝试过这样的语法:
currentRoute.Values.routevaluename
and
currentRoute.Values[0]
但我似乎无法让它发挥作用。
Edit
我还尝试将此代码放入导航控制器的操作中:
var current = RouteData["streamUrl"];
and
var current = this.RouteData["streamUrl"];
两个版本都给我这个错误:
错误 1 无法将 [] 索引应用到 >type 'System.Web.Routing.RouteData' C:\pathtocontroller\NavController.cs 的表达式 25 27
Edit 2
了解我尝试匹配的路由值也可能会有所帮助:
routes.MapRoute(null, "", // Only matches the empty URL (i.e. ~/)
new
{
controller = "Stream",
action = "Entry",
streamUrl = "Pages",
entryUrl = "HomePage"
}
);
routes.MapRoute(null, "{streamUrl}/{entryUrl}", // matches ~/Pages/HomePage
new { controller = "Stream", action = "Entry" }
);
因此,最终 mydomain.com/blog/blogentry1 将映射到与 mydomain.com/pages/welcome 相同的控制器/操作。我不是在寻找控制器值或操作值,而是在寻找streamUrl 值和EntryUrl 值。