代码之家  ›  专栏  ›  技术社区  ›  Andrew Grothe

asp.net具有可选起始参数的mvc路由

  •  3
  • Andrew Grothe  · 技术社区  · 15 年前

    我要开一个现有的港口ASP.NETWeb窗体CMS到ASP.NET希望从一开始就得到正确的路由。

    我想 this answer 是接近我所寻找的,但希望有人有一些额外的投入。

    当前的URL指令如下所示:


    ?内容=公司/关于我们/概述

    等等等等

    我想添加一个可选的语言参数,并在MVC中保持类似的结构。比如:

    新闻/时事新闻/这是一篇新闻文章
    en/News/CurrentNews/This-is-a-News-文章


    编辑/en/News/CurrentNews/This-is-a-News-article

    还是我倒过来更好?


    en/News/CurrentNews/This-is-a-News-article/编辑

    我认为这种方式(在行动结束时)需要从我读过的其他问题中为每个场景找到一条路线。

    另一点是,现有的网址是这样做的搜索引擎优化和面包屑生成。即URL显示当前的导航路径。

    比如:

    这是一篇新闻文章

    用面包屑

    总体思路和解决方案?我应该从一个定制的路由类开始以获得最大的灵活性吗?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Peter    15 年前

    您必须确保某些路由规则不会意外重叠。例如,假设您将语言作为第一个标记,请确保没有名称为“en”的新闻类别。我知道这是个愚蠢的例子,但我想你明白了。确保将最不准确的路由规则放在最后。

    我个人会这样安排:

    [language]/[category]/[subcategory]/[itemtitle]/[itemid]
    

    为什么您可能会问[itemId]?如果你有一个更大的网站,它可能会发生,你有两个完全相同的名称新闻文章。您的代码可能“碰巧”只显示返回的第一个新闻项,但也可能不是这样。ID总是唯一的,在SEO术语中,添加ID真的不重要(至少在我的经验中)。

    您可以添加一个路由,其中省略了[language],而是提供了默认值。

    blogpost

    推荐文章