ASP.NET路由问题

时间:2009-07-03 20:15:47

标签: asp.net-mvc routing

为什么:

http://MySite.com/Project/24/Search/32/Edit/49

首选?

http://MySite.com/Project/24?Search=32&Edit=49

5 个答案:

答案 0 :(得分:6)

我不确定你的前提来自哪里?它看起来像一个人为的例子,很难评论。

更好的比较将是:

http://MySite.com/Project/24/Members/Edit

相反:

http://MySite.com/Projects.aspx?id=24&section=Members&action=Edit

除其他外,实体的层次结构在第一个示例中是显而易见的(即,项目包含成员)。它还建议您可以使用包含与第一个类似结构的其他URL(即/Projects/24/Projects/24/Members),因此从这个意义上说它更简洁。

如果归结为具有可变数量参数的操作,例如搜索,则使用URL参数是完全正确的,因为这将为您提供更大的灵活性,例如:

http://MySite.com/Projects/Search?name=KillerApp&type=NET

你可以使用第一种风格构建一个URL,但是你没有真正获得任何东西,管理这条路线会增加不必要的开销:

http://MySite.com/Projects/Search/name/KillerApp/type/NET

我认为这(或者任何类似的结构,例如,如果你删除了参数名称)都会受到人为的层次结构的影响 - 这种情况下的行为实际上是搜索,其他一切只是搜索的一个参数,所以它是在同一层次结构中,而不是某些“子”层次结构。

答案 1 :(得分:3)

不是一个公平的比较。该样式允许您删除GET参数名称,因此路由的应该读取类似

的内容
http://MySite.com/Project/24/32/49

但这确实是一种美学上的改进 - 它看起来更整洁,更容易打字或读出来。

答案 2 :(得分:3)

它主要是人类可读性问题,虽然(因为大多数搜索引擎排名算法都没有公开披露),但它也被认为具有SEO值。

答案 3 :(得分:1)

在示例中,它可能没有任何好转。但总的来说它是Search Engine Optimization。以下是一些SEO best practices - 来自该文章......

  

理想情况下,URL结构应该是   静态,并显示页面是什么   关于。一个简单明了的URL   结构对两者都容易得多   搜索引擎蜘蛛和人类   生物。

答案 4 :(得分:0)

更容易记住。用户更容易记住/ Employee / 1获取员工#1的信息而不是理解查询字符串。不是使用它的理由,但我认为这是一个很小的改进。