Я работаю над проектом, использующим 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:
- вещи
- вещи / стр.2
- вещи / from11-14-2010 / to11-24-2010
- вещи / from11-14-2010 / to11-24-2010 / стр.2
В настоящее время у меня есть эти маршруты:
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, похоже, не работает так, как я думал, когда работал с ним. Могут ли мои маршруты быть упрощены до одного маршрута?