2013-12-26 4 views
3

В моем маршруте класса конфигурации, я создал пользовательскую конфигурацию маршрутизации с static префиксом,MVC маршрутизации не работает

public static void RegisterRoutes(RouteCollection routes) { 
    routes.MapRoute("MyRoute", "{controller}/{action}", 
    new { controller = "Home", action = "Index" }); 
    routes.MapRoute("", "Public/{controller}/{action}", 
    new { controller = "Home", action = "Index" }); 
} 

Но URL ...mysite/Public дает ошибку page not found. Что здесь не так?

ответ

0

Изменение порядка двух маршрутов,

public static void RegisterRoutes(RouteCollection routes) { 

routes.MapRoute("", "Public/{controller}/{action}", 
new { controller = "Home", action = "Index" }); 

routes.MapRoute("MyRoute", "{controller}/{action}", 
new { controller = "Home", action = "Index" }); 

} 

MVC маршрутизации проходит через шаблоны сопоставления в соответствии с заданным порядком. Он пытается сгенерировать URL как Public/index, который не найден.

-1

Система маршрутов MVC пытается сопоставить входящий URL-адрес с шаблоном URL маршрута, который был определен первым, и переходит к следующему маршруту, только если нет совпадения. Маршруты проверяются последовательно до тех пор, пока не будет найдено совпадение или не будет исчерпан набор маршрутов. Результатом этого является то, что сначала мы должны определить наиболее конкретные маршруты.

Смежные вопросы