gpt4 book ai didi

asp.net - 在 ASP.NET MVC 2 中 - 如何将路由值输入到我的导航 Controller 中,以便我可以突出显示当前链接?

转载 作者:行者123 更新时间:2023-12-03 18:16:54 24 4
gpt4 key购买 nike

我正在尝试将当前 Route 放入我的导航 Controller 中,以便在填充导航菜单数据时运行比较。

我的链接对象是这样的:

public class StreamNavLinks
{
public string Text { get; set; }
public RouteValueDictionary RouteValues { get; set; }
public bool IsSelected { get; set; }
}

在母版页中,我试图将当前路由传递给导航 Controller ,如下所示:
<% 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


 currentRoute.Values[0]

但我似乎无法让它发挥作用。

编辑

我还尝试将此代码放入导航 Controller 的操作中:
var current = RouteData["streamUrl"];


var current = this.RouteData["streamUrl"];

两个版本都给我这个错误:

Error 1 Cannot apply indexing with [] to an expression of >type 'System.Web.Routing.RouteData' C:\pathtocontroller\NavController.cs 25 27



编辑 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 相同的 Controller /操作。我不是在寻找 Controller 值或操作值,而是在寻找 streamUrl 值和 EntryUrl 值。

最佳答案

您不需要将路由数据传递给 Controller ​​,因为 Controller 已经通过 RouteData 了解了它。属性(property):

public ActionResult Index() {
// You could use this.RouteData here
...
}

现在,如果您想传递一些简单的参数,例如用于呈现 View 的当前操作,您可以这样做:
<%= Html.RenderAction(
"MenuOfStreamEntries",
"Nav",
new {
currentStreamUrl = "Blog",
currentAction = ViewContext.RouteData.Values["action"],
currentController = ViewContext.RouteData.Values["controller"]
}
); %>

在您的 Controller 中:
public ActionResult Nav(string currentAction, string currentController) 
{
...
}

关于asp.net - 在 ASP.NET MVC 2 中 - 如何将路由值输入到我的导航 Controller 中,以便我可以突出显示当前链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3660329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com