2013-12-09 85 views
0

我在www.server.com/events/calendar上有一個日曆。我的事件查詢字符串看起來像www.server.com/events/calendar/seofriendly-event-query-string。但用戶可以使用下拉列表按年份和月份選擇事件,因此mu查詢將變爲www.server.com/events/calendar/2013,甚至www.server.com/events/calendar/2013/12。所以問題是當我點擊www.server.com/events/calendar/seofriendly-event-query-string時,我得到了www.server.com/events/calendar。如何安排我的路線,讓他們明白我需要展示的東西:名單還是事件?MVC4中的正確路由模式

回答

1

好,我想補充像這樣的定製路線:

routes.MapRoute(
    "NewRoute", // Route name 
    "{controller}/{action}/{id}/{another_id}", // URL with parameters 
    new { controller = "Events", action = "Calendar", id = UrlParameter.Optional, another_id = UrlParameter.Optional } // Parameter defaults 
); 

你的控制器隨後將有一個操作方法是這樣的:

public ActionResult MyAction(string id, string another_id) 
{ 
    // in the question you mentioned that a a valid list querystring would contain 
// multiple integer parameters, and an event querystring would include a 
//seo friendly string 
    int para; 
    if (int.TryParse(id,out para)) 
     { 
     // show list view 
     } 
    else 
     { 
     //show event view 
     } 
} 

你只需要收到的參數和運行某種檢查以確定您是要顯示一個事件還是一個列表。