2011-12-21 4 views
0

У меня есть 2 маршрута, отображенные в моем отображении ...MVC 3 маршрута отображение

это, чтобы позволить пользователю вводить URL-адрес с дополнительным параметром для быстрой загрузки их город на главной странице сайта, пример:

www.mysite.com/manchester www.mysite.com/liverpool

или просто перейти на главную страницу defaul если www.mysite.com вводится с ничего.

С отображением по умолчанию в месте для обработки контроллер/действие/параметр я добавил дополнительный маршрут таким образом, параметр рукой:

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }); // Parameter defaults 

routes.MapRoute(
    "HomePageQuickFind", 
    "{quickFind}", 
    new { controller = "Home", action = "Index", quickFind = UrlParameter.Optional }); 

Я не очень хорошо с отображением маршрута, как я с трудом понять это, и мой вопрос - это плохой подход, который вызывает мое «жадность маршрутизации» и есть ли другой способ реализации моего сценария?

ответ

1

Я думаю, вам нужно заменить маршрут по умолчанию набором маршрутов для каждого из ваших контроллеров, а затем добавить быстрый маршрут поиска в качестве последнего маршрута. Это должно позволить любым непревзойденным маршрутам пробиться к быстрому маршруту поиска. Попробуйте что-то вроде этого:

// Routes for standard controllers 
routes.MapRoute(
    "Home", 
    "home/{action}/{id}", 
    new { controller = "home", action = "index", id = UrlParameter.Optional } 
); 
routes.MapRoute(
    "Map", 
    "map/{action}/{id}", 
    new { controller = "map", action = "index", id = UrlParameter.Optional } 
); 
routes.MapRoute(
    "Default", 
    "users/{action}/{id}", 
    new { controller = "users", action = "index", id = UrlParameter.Optional } 
); 

// Route for www.mysite.com/cityname 
routes.MapRoute(
    "QuickFind", 
    "{quickFind}", 
    new { controller = "home", action = "index", quickFind = UrlParameter.Optional } 
);