Asp.net mvc ASP.NET MVC中的路由问题

Asp.net mvc ASP.NET MVC中的路由问题,asp.net-mvc,routes,Asp.net Mvc,Routes,我有一个ASP.NETMVC站点在一个经典的ASP站点下。MVC站点是: 路线 干得好。然而,路线: 没有。点击它,看看我得到了什么。如果我包括行动: 它起作用了 当我在家里通过在VS中按F5来运行它时,它只需执行(即,未指定任何操作)即可正常工作。以下是我的路线: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}

我有一个ASP.NETMVC站点在一个经典的ASP站点下。MVC站点是:

路线




干得好。然而,路线:

没有。点击它,看看我得到了什么。如果我包括行动:

它起作用了

当我在家里通过在VS中按F5来运行它时,它只需执行(即,未指定任何操作)即可正常工作。以下是我的路线:

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 maps to HomeController(索引操作)

我希望www.inrix.com/traffic/support映射到SupportController,索引操作

“支援”路线是怎么回事

附加代码:

控制器:

using System.Web.Mvc;

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


您是否有具有索引操作的交通调度员?如果是这样,我认为您需要设置如下所示的路线:

routes.MapRoute(
    "Terms",
    "traffic/support",
    new { controller = "Traffic", action = "Index" }
    );
在RegisterRoutes方法中,将此路由置于术语路由之上

编辑

我会这样设置我的路线:

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}"
        );
}
@编辑: 我认为您有一个文件路径(可能是文件夹)具有相同的url。我是说,一个名为“支持”的文件夹。 要使用路由路径覆盖文件路径,您需要添加:

routes.RouteExistingFiles = true;

关于F5在本地主机上运行调试,您是正确的。有关您的问题的澄清,请参见文章末尾。@birdus,请检查我的更新答案,并删除以前的评论,以简化讨论。希望能成功,就这样!事实证明,我并不真的需要那个目录,所以我只是删除了它并修复了它。谢谢流量实际上流向HomeController。SupportController.Index是我希望此URL的位置。我在问题的底部澄清了这一点。因此,您希望添加此路由,而不是
routes.MapRoute(“术语”、“流量/支持”,new{controller=“support”,action=“Index”})您的
交通/支持
路线无法匹配的原因是您的默认路线将查找具有“支持”操作的交通控制器。您需要在RegisterRoutes方法中将上述路由置于默认路由之前。感谢您提供有关路由的基本帮助。术语的Id是因为可以有很多种语言,我在这里输入类似于“de”的语言(de=德语)。这是我遇到的另一个问题,我还没有得到答案。看起来我甚至不需要支援路线。我把它移走了,路线很好。我喜欢更简单的。看起来它使用了默认的路由。
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}"
        );
}
routes.RouteExistingFiles = true;