【问题标题】:How do I do multipled level routes best in MVC如何在 MVC 中最好地执行多级路由
【发布时间】:2010-12-15 22:28:25
【问题描述】:

我有一个网站,我想要这样的 URL:

/Some maincategory name/{id}/Some subcategory name/{id}/Some item name/{id}

我包括每个级别的 ID,因为名称不是唯一的。这是可行的,但我必须为每个级别创建一个新路由。我的 Html.ActionLink 看起来也很糟糕。

每个级别都有自己的控制器,因为级别完全不同。 URL 可能是这样的:

_/Birds/2/Waders/4/Flamingos/23_  
_/Mammals/5/Dogs/23/Longeared/25/Somedog/76_  
_/Insects/7/Spiders_

这只是一个示例,而不是我将要使用的示例。我的申请与动物无关。

有什么好的方法可以做到这一点,或者我应该使用标准路由吗?

【问题讨论】:

  • 所以......你是说你将拥有 /Birds/2/Waders/4/ and /Birds/48 /Waders/7/ 并且需要将它们路由到不同的控制器?我很抱歉,但我的大脑只是试图理解你想要达到的目标。几乎可以肯定有一种方法可以删除 ID,但是您没有提供足够或足够具体的细节来告诉我,imo。

标签: asp.net asp.net-mvc asp.net-mvc-routing


【解决方案1】:

有两种解决方案:

  1. 使用全局路由会导致

    http://you.url.com/controller/action/{mid}/{sid}/{tid}

    其中 mid = 主要类别 ID sid = 子类别 ID tid = 物品编号

  2. 使用路由和查询字符串的组合

    http://you.url.com/controller/action/{tid}?mid={mid}&sid={sid}

我建议你使用第二种方法,这样你就不用去纠结路线的东西了。希望对您有所帮助!

【讨论】:

  • 我知道如何使用全局路由来做到这一点,但解决方案看起来很难看,我想知道是否有人知道如何以更智能/更清洁的方式做到这一点。此外,我为每个级别都有一个控制器/视图,它可能多达 5 个级别。我想我想要的是我的网址中的面包屑......
  • 我使用标准的 MVC 方式使用控制器/动作/{id} 来保持简单。
【解决方案2】:

如何在每个节点创建一个描述您的类别、值、url 的 xml 文件,然后通过遍历这些 xml 节点来创建一个路由表?

这种 xml 还可以帮助您在页面上创建面包屑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 2011-10-31
    • 2010-12-23
    • 1970-01-01
    相关资源
    最近更新 更多