ASP.NET路由问题

Rob*_*vey -1 asp.net-mvc routing

为什么是这样:

http://MySite.com/Project/24/Search/32/Edit/49
Run Code Online (Sandbox Code Playgroud)

比这更受欢迎?

http://MySite.com/Project/24?Search=32&Edit=49
Run Code Online (Sandbox Code Playgroud)

Mic*_*art 6

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

更好的比较是这样的:

http://MySite.com/Project/24/Members/Edit
Run Code Online (Sandbox Code Playgroud)

相反:

http://MySite.com/Projects.aspx?id=24&section=Members&action=Edit
Run Code Online (Sandbox Code Playgroud)

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

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

http://MySite.com/Projects/Search?name=KillerApp&type=NET
Run Code Online (Sandbox Code Playgroud)

您可以使用第一种样式构建URL,但实际上并没有获得任何东西,管理路由可能会增加不必要的开销:

http://MySite.com/Projects/Search/name/KillerApp/type/NET
Run Code Online (Sandbox Code Playgroud)

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