私は、ASP.NET MVC3 RC1を使ってプロジェクトを進めています。私のルートを単純化できるかどうか疑問に思っていました。ルーティングの簡素化
私は、このコントローラのアクションを持っている:
public ActionResult Things(DateTime? fromDate, DateTime? toDate, int? pageNo)
{
DataLayer dataLayer = new DataLayer();
int page = pageNo.HasValue ? pageNo.Value : 1;
List<Thing> things = dataLayer.GetThingsByDateRangePaged(User.Identity.Name, fromDate, toDate, pageNo, PageSize);
return View(things);
}
私は、次のURLで、このコントローラのアクションにアクセスできるようにしたいと思います:
- もの
- もの/ PAGE2
- 物件/1111-14-2010/to11-24-2010
- 物件/ from11-14-2010/to11-24-2010/page2
私は現在、これらの空路はアウトマッピングされていました:
routes.MapRoute("Things",
"Things",
new { controller = "Thing", action = "Things" }
);
routes.MapRoute("ThingsPaged",
"Things/Page{pageNo}",
new { controller = "Thing", action = "Things" }
);
routes.MapRoute("ThingsCertainPeriod",
"Things/From{fromDate}/To{toDate}",
new { controller = "Thing", action = "Things" }
);
routes.MapRoute("ThingsCertainPeriodPaged",
"Things/From{fromDate}/To{toDate}/Page{pageNo}",
new { controller = "Thing", action = "Things" }
);
は私のルートはリファクタリングのために熟しているが、私は、冗長性を取り除くためにどのように完全にわからないように私には思えます。 UrlParameter.Optionalは、私が実験したときのように思ったようには動作しません。私のルートを1つのルートに単純化できますか?
接頭辞との間でページを削除していないのですが、URLを追加して友好的にすると感じています。 – xTRUMANx
これで十分です。そのように動作するように2つのルートを変更することができます。 – Steve
ヘイスティーブ、ついにあなたの提案を試してみました。プレフィックスとの間でページを使用しないと、ルートがうまくいくようです。 4つのルートはそれほど悪くはないと思います。 – xTRUMANx