2013-04-30 4 views
2

У меня есть сайт ASP.NET MVC под классическим ASP-сайтом. Сайт MVC является:Проблема с маршрутизацией в ASP.NET MVC

http://www.inrix.com/traffic

Маршруты

http://www.inrix.com/traffic
http://www.inrix.com/traffic/home
http://www.inrix.com/traffic/features

отлично работает. Однако маршрут:

http://www.inrix.com/traffic/support

нет. Нажмите, чтобы посмотреть, что я получаю. Если я включаю действие:

http://www.inrix.com/traffic/support/index

это работает.

Когда я запускаю это дома, нажав F5 в VS, он работает нормально только с http://www.inrix.com/traffic/support (т. Е. Никаких действий не указано). Вот мои маршруты:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

    routes.MapRoute(
     "Default", 
     "{controller}/{action}/{id}", 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

    routes.MapRoute(
     "ThankYou", 
     "{controller}/{action}/{email}/{id}" 
     ); 
} 

www.inrix.com/traffic сопоставляется HomeController (индекс действия).

Я хочу, чтобы www.inrix.com/traffic/support сопоставлялся с SupportController, действием индекса.

Что происходит с «поддержкой» маршрута?

Дополнительный код:

Контроллер:

using System.Web.Mvc; 

namespace InrixTraffic.Controllers 
{ 
    public class SupportController : Controller 
    { 
     public ActionResult Index() 
     { 
      return View(); 
     } 
    } 
} 

Вид:

@{ 
    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Support</title> 
</head> 
    <body> 
     <h1>Hello!</h1> 
    </body> 
</html> 

Новый маршрут:

routes.MapRoute(
     "Support", 
     "traffic/support", 
     new { controller = "Support", action = "Index" } 
     ); 

ответ

2

@EDIT: Я думаю, что у вас есть путь к файлу (папка), вероятно, с той же ссылкой. Я имею в виду папку с именем «поддержка». Чтобы переопределить путь к файлу с пути маршрута вам нужно добавить:

routes.RouteExistingFiles = true; 
+0

Вы считаете, что F5 работает на отладке на localhost. См. Конец сообщения для разъяснения ваших вопросов. – birdus

+0

Нет. Как мне это сделать? – birdus

+0

@birdus, пожалуйста, проверьте мой обновленный ответ и удалите предыдущие комментарии для простоты обсуждения. Надеюсь, что это сработает. –

1

ли вам есть контроллер трафика с действием индекса? Если это так, я думаю, вам нужно установить вверх маршрут, как показано ниже, Что:

routes.MapRoute(
    "Terms", 
    "traffic/support", 
    new { controller = "Traffic", action = "Index" } 
    ); 

Место это маршрут выше вашего Условия маршрута в вашем методе RegisterRoutes.

EDIT

Я хотел бы настроить мои маршруты, как это:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Support", 
     "traffic/support", 
     new { controller = "Support", action = "Index" } 
    ); 

    // don't know why you need the id at the end 
    routes.MapRoute(
     "Terms", 
     "terms", 
     new { controller = "Terms", action = "Index" } 
     ); 

    routes.MapRoute(
     "Default", 
     "{controller}/{action}/{id}", 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

    // why does this route not have any defaults defined? 
    routes.MapRoute(
     "ThankYou", 
     "{controller}/{action}/{email}/{id}" 
     ); 
} 
+0

трафика на самом деле идет в HomeController. SupportController.Index - это то место, где я хочу, чтобы этот URL-адрес пошел.Я уточнил, что в нижней части вопроса. – birdus

+0

Так вы хотите добавить этот маршрут вместо 'routes.MapRoute ( "Условие", "трафик/поддержки", нового {контроллера = "Поддержка", действие = "Index"} );' – wellers

+0

Причины вашего ' трафик/поддержка 'не подходит, потому что ваш маршрут по умолчанию будет искать TrafficController с действием« Поддержка ». Вы должны поместить вышеуказанный маршрут до маршрута по умолчанию в свой метод RegisterRoutes. – wellers

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