在 ASP.NET MVC 2 中 - 如何将路由值获取到导航控制器中,以便突出显示当前链接?

2023-12-06

我正在尝试将当前路线放入导航控制器中,以便在填充导航菜单数据时可以运行比较。

我的链接对象是这样的:

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 值。


您不需要将路由数据传递给控制器​​,因为控制器已经通过RouteData财产:

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

现在,如果您想传递一些简单的参数,例如用于渲染视图的当前操作,您可以这样做:

<%= Html.RenderAction(
    "MenuOfStreamEntries",
    "Nav",
    new {
        currentStreamUrl = "Blog", 
        currentAction = ViewContext.RouteData.Values["action"],
        currentController = ViewContext.RouteData.Values["controller"]
    }
); %>

在你的控制器中:

public ActionResult Nav(string currentAction, string currentController) 
{
    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET MVC 2 中 - 如何将路由值获取到导航控制器中,以便突出显示当前链接? 的相关文章

随机推荐

  • 在同一个azure web应用程序上创建虚拟目录

    我有一个在 Azure 上运行的应用程序 我需要复制该应用程序 以便不同的用户可以访问例如 site com s1 和 site com s2 并单独使用它们 应用程序是一样的 数据库会变 我尝试为我的应用程序创建一个虚拟目录 但每次都会遇
  • 检查窗口打开

    var windowUrl var windowName mywin var w window open windowUrl windowName windowSize w document write html w document cl
  • 使用不同的.Net 语言?

    是否有不同受欢迎程度的细分 Net 语言可用的 有谁知道任何提供此信息的调查 或者即使有可能确定这一点 Update 答案是not不同 Net 语言的列表 我希望看到显示每种 Net 语言的相对使用 流行程度的统计数据 谢谢 如果你像我一样
  • 访问受 Cloudflare 保护的网页

    首先 我想道歉 以防我的问题可能无法提供足够的连接或任何其他问题 我现在正在手机上输入此内容 因此 我正在开发一个项目 需要我在网页中自动执行任务 为了做到这一点 第一步是首先访问该页面 但我遇到了一个障碍 我尝试过搜索和想通了也无济于事
  • 如何使用 C# 迭代和统计 Word 文档中的修订次数?

    我一直在寻找这个问题 但找不到任何答案 所以希望这里的人可以提供帮助 我正在用 C 编写一个 WinForms 应用程序 其中我使用 Word Application Compare Documents 来比较两个文档并获取一个结果文档 其
  • shouldAutorotate To InterfaceOrientation:从未调用过

    我在 部署信息 下将支持的界面方向设置为除纵向倒置之外的所有方向 我想重写 shouldAutorotateToInterfaceOrientation 以实现自定义行为 即根据条件支持景观 由于限制 自定义视图转换 我只有一个视图控制器
  • 如何使用 AVAudioPlayer 在 iPhone sdk 中暂停和恢复同一首歌曲

    我想暂停这首歌 然后在 iPhone 中使用编程方式从该持续时间点继续播放 当我尝试暂停歌曲并再次开始播放我暂停的歌曲时 如何对其进行编码 是否有任何直接属性或建议任何代码可以解决我的问题 void playMusic path NSBun
  • 如何使用 Nuxt 2 转译 node_modules 中的依赖项?

    我读过有关转译的问题node modulesNuxt 但据说新的 Nuxt 2 已经解决了这个问题transpile选项中的nuxt config js file https nuxtjs org api configuration bui
  • 从 Beam 管道连接 google cloud sql postgres 实例

    我想从在谷歌数据流上运行的 apache beam 管道连接谷歌云 sql postgres 实例 我想使用 Python SDK 来完成此操作 我无法为此找到适当的文档 在云SQL如何指导我没有看到任何数据流文档 https cloud
  • Xcode 4.5 中的当前位置错误

    在 Xcode 4 5 中 苹果引入了苹果新地图 我的应用程序大量需要地图服务 我注意到在我的应用程序中它显示了错误的当前位置 直到您删除应用程序并重新打开它才显示正确的当前位置 有时不会 顺便提一下 当我连接到 4G 时 它显示的当前位置
  • javax.el.PropertyNotWritableException:value =“”:设置操作的非法语法[重复]

    这个问题在这里已经有答案了 我有这个表格
  • Javascript:检查两个div之间的碰撞

    有什么方法可以检查名称为 character 的 DIV 是否与名称为 ground 的 DIV 重叠 我想用干净的 Javascript 来做到这一点 我知道 jQuery 更好 但这就是我不想要的 我看到了这个帖子 检查某些div之间的
  • Solr:在数据导入期间转换逗号分隔字段

    我正在使用 Solr 3 5 0 我正在从 JDBC 数据源导入 并且有一个分隔字段 我希望将其拆分为各个值 我正在使用RegexTransformer但我的领域没有被分割 样本值 Bob Carol Ted Alice 数据配置 xml
  • 编译并运行动态代码,而不生成EXE?

    我想知道是否可以编译并运行存储的代码 而不生成 exe 或任何类型的其他文件 基本上从内存中运行该文件 基本上 主应用程序将具有一些存储的代码 可能会更改的代码 并且需要编译代码并执行它 无需创建任何文件 创建文件 运行程序 然后删除文件不
  • 实体框架DbContext无需查询并通过外键更新值

    我有一个更新一些表的方法 对于更新我需要首先获得TestProcess 但我不喜欢这样 我怎样才能更新TestProcess没有select firstOrDefault 操作 仅用于更新操作 方法示例 public void Update
  • 如何动态地分块重塑矩阵? [复制]

    这个问题在这里已经有答案了 假设我有A 1 8 11 18 21 28 31 38 41 48 现在我想将所有内容从第 4 列向前移动到行位置 我该如何实现这一目标 A 1 2 3 4 5 6 7 8 11 12 13 14 15 16 1
  • 如何处理“变量时间”(DATE、双精度、8 字节)?

    我似乎找不到任何有关 变体时间 的信息 DATE 双精度 8 字节变量 被处理 我有一个不同的时间 A 哪个值是 41716 892329 如果我转换 A 使用 变体时间到系统时间 or COle日期时间 我明白 2014 03 18 21
  • 移动向量会使迭代器失效吗?

    如果我有一个向量迭代器a 然后我移动构造或移动分配向量b from a 该迭代器是否仍然指向同一个元素 现在在向量中 b 这就是我在代码中的意思 include
  • 如何使用存储过程在sql server 2008中拆分字符串并将数据插入表

    我想以这种格式分割一个字符串 引用 date 10 10 2000 age 13 date 01 01 2001 age 12 date 02 02 2005 age 8 实际上这个字符串只是一个示例 我的原始字符串非常大 我不明白的是 如
  • 在 ASP.NET MVC 2 中 - 如何将路由值获取到导航控制器中,以便突出显示当前链接?

    我正在尝试将当前路线放入导航控制器中 以便在填充导航菜单数据时可以运行比较 我的链接对象是这样的 public class StreamNavLinks public string Text get set public RouteValu