1
我正在使用ASP.NET MVC 2並希望優化我的路由。期望的結果如下:ASP.NET MVC中的內容感知路由映射2
http://www.url.com/Sites/
http://www.url.com/Sites/Search/NY001
http://www.url.com/Sites/NY001
http://www.url.com/Sites/NY001/Photos
這個方案的問題是,我想不同的方式處理URL位取決於它們的內容,在一定意義上。可以想象,「NY001」是特定網站的標識符,而不是生活在Sites
控制器中的操作。我目前的解決方案是爲特定於站點的URL定義一個特殊的路由圖,並在此之前單獨指定Sites
控制器中的每個操作。
// currently in place, works
routes.MapRoute("SiteList", "Sites", new { controller = "Sites", action = "Index" });
routes.MapRoute("SiteSearch", "Sites/Search/{searchString}", new { controller = "Sites", action = "Index", searchString = "" });
routes.MapRoute("SiteNotFound", "Sites/NotFound", new { controller = "Sites", action = "NotFound" });
// and so on...
routes.MapRoute("Site", "Sites/{siteId}/{action}", new { controller = "Sites", action = "Index", siteId = "" });
由於這是我的Web應用程序的核心組件之一,這些操作每天都在增加,並且列表變得有點笨拙。我很想能夠提煉出具體的行動路線的一長串一個聲明,與此類似:
routes.MapRoute("Sites", "Sites/{action}/{id}", new { controller = "Sites", action = "Index", id = UrlParameter.Optional });
的問題是路由框架沒有這條新航線和區分的方式在上面的例子中,特定於站點的站點;因此,兩者都是匹配的。我堅持宣佈每個行動分開?我應該考慮使用正則表達式來區分URL的內容嗎?
在此先感謝,如果此問題已以其他形式提出,我事先致歉。