【问题标题】:Multiple route parameters with clean URLs具有干净 URL 的多个路由参数
【发布时间】:2009-02-06 01:52:51
【问题描述】:

我正在 ASP.NET MVC 中进行 digg 克隆,以帮助更好地自学 ASP.NET MVC。我一直在研究 StackOverflow 在传递诸如排序之类的内容时如何处理路由,我想我认为使用干净 URL 的全部意义在于,您的 URL 末尾没有 ?sort=blah 之类的东西用于 SEO。

是否有推荐的方法在您的 URL 中包含许多可能是可选的参数,同时仍然保持它们干净。我有一些想法,希望得到一些反馈。

选项 1:

使用通配符(糟糕)

选项 2:

将排序添加到 URL 的开头,因为它具有最大的覆盖范围,并且在查看故事时始终适用。示例(使用 StackOverflow)

而不是 ?sort=featured...

https://stackoverflow.com/featured/tagged/asp.net-mvc
https://stackoverflow.com/new/tagged/c#
https://stackoverflow.com/tagged/asp.net(某种默认值)

无论如何——我似乎想不出任何其他方法来做到这一点。

【问题讨论】:

    标签: asp.net-mvc routing


    【解决方案1】:

    等等,堆栈溢出是否使用查询字符串参数进行排序,例如:

    https://stackoverflow.com/questions/518812?sort=oldest#sort-top

    /featured 是不同的。在这种情况下,您控制的是返回哪些记录,而不仅仅是它们的排序方式。

    URL 描述资源。查询字符串参数描述了资源的呈现方式。一般来说:

    • 描述返回数据性质的片段应该是 URL 的一部分。
    • 描述数据如何呈现的片段应该是查询字符串参数。

    拥有查询字符串参数不会损害您的 SEO。

    【讨论】:

    • 是的,我只是想举个例子,但我明白你在说什么,如果不伤害 SEO,我将只使用查询字符串参数。谢谢!
    • QSP 既不伤害也不帮助 SEO,AFAIK。在 URL 中添加额外的废话可以提供帮助,但会牺牲正确性。
    • 是的,只是在所有关于干净 URL 和 SEO 的炒作中,我只是认为最好不要使用它们。然而,拥有一个只有 /sort-votes/tag-blah/something-blah/ 的巨大 url 看起来很愚蠢。再次感谢。
    【解决方案2】:

    您应该选择最适合您的方法。需要考虑的一些事项:

    • 可维护性:您将如何在整个生命周期内维护链接结构。别人会怎样?
    • 可读性/调试:您将如何调试链接?自然语言会帮助你吗? (它帮助到我)。

    【讨论】:

      【解决方案3】:

      假设您有一个名为 StoryController 的控制器,它可以显示您的所有帖子。你可以让你的路线看起来像这样:

      routes.MapRoute("FeatureTagged", "feature/tagged/{tag}", new { 
             controller = "Story", action = "ShowFeaturedByTag" });
      routes.MapRoute("NewTagged", "new/tagged/{tag}", new { 
             controller = "Story", action = "ShowNewByTag" });
      

      顺便说一句,已经有一个 ASP.NET MVC 的 digg 克隆。它叫做 Kigg:http://www.codeplex.com/Kigg,它正在一个名为 DotNetShoutout 的网站上运行

      【讨论】:

      • 是的,我通过 KiGG 寻找答案并没有真正找到。
      猜你喜欢
      • 2018-11-29
      • 2013-11-27
      • 2011-04-02
      • 1970-01-01
      • 2019-02-05
      • 2015-09-27
      • 2013-12-26
      • 2014-09-11
      • 2015-10-06
      相关资源
      最近更新 更多