次の URL を取得したいのですが、どうすればよいかわかりません。
1) global.asax に登録されたルート
2) コントローラのメソッド
URL/ルート
- 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
これが役立つ場合は、これらすべての Index アクションをデフォルトの HomeController で実行したいと考えています。(実際には、HomeController の名前を PostController に変更しましたが、それはそれほど重要ではありません/問題に影響を与えるべきではありません)。