Правильные шаблоны маршрутов в MVC4

У меня есть календарь на 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. Как организовать маршруты, чтобы они поняли, что мне нужно показать: список или событие?

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
        }
 }

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

Другие вопросы по тегам