【发布时间】:2009-02-07 22:51:10
【问题描述】:
我希望有以下 url(s).. 我不知道我应该如何做以下事情:
1) 在 global.asax 中注册的路由
2) 控制器方法
网址/路线
- http://www.mysite.com/
- http://www.mysite.com/?page=2
- http://www.mysite.com/?tags=fooBar
- http://www.mysite.com/?page=2&tags=fooBar
请注意 - 我不想拥有http://www.mysite.com/{page}/{tags}/ 等。如果这种差异有意义的话。我也了解默认路由,但我不确定如何调整它们以使其满足我的要求。
最后,我也知道如何使用 Html.ActionLink(..) 所以我不担心如何使用它。
有什么建议吗?
单元测试
我也觉得我可以进行单元测试,如下所示:- (使用 MvcFakes)...
// Arrange.
var routes = new RouteCollection();
MvcApplication.RegisterRoutes(routes);
// Act.
context = new FakeHttpContext("~/?page=2&tags=fooBar");
routeData = routes.GetRouteData(context);
// Assert.
Assert.AreEqual("Home", routeData.Values["controller"]);
Assert.AreEqual("Index", routeData.Values["action"]);
Assert.AreEqual(2, routeData.Values["page"]);
Assert.AreEqual("fooBar", routeData.Values["tags"]);
更新 1
如果有帮助,我希望在默认 HomeController 上运行所有这些 Index 操作。 (实际上,我已将 HomeController 重命名为 PostController,但这并不重要/不应该影响问题)。
【问题讨论】:
-
这看起来你正在针对 Home 控制器上的 Index 操作运行所有内容。对吗?
-
这是正确的。这就是我想要的。
标签: asp.net-mvc routes