2013-12-09 2 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 
     } 
} 

вам просто нужно, чтобы получать параметры и запустить какой-то проверки, чтобы определить, собираетесь ли вы показывать событие или список.