当我更改global.asax中的url时,路径注册会中断

时间:2012-04-19 15:45:18

标签: c# asp.net-mvc global-asax

以下路径注册适用于我的asp.net MVC应用程序

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

当我更改时,抓住此网址

我收到resource not found错误

  

表示localhost:85 \ dis \ TrackingChannels

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

好吧,我需要出去所以我现在发布这个,因为我不知道我会有多久。

我设置了默认的MVC 3项目并更改了路由以匹配您的情况。

的Global.asax:

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

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

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

添加了TrackingChannelsController

public class TrackingChannelsController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Test()
    {
        return View();
    }
}

我故意添加Test操作以查看/dis/trackingchannels/{action}是否也有效。然后我添加了几个视图,产生了以下项目结构:

Project setup

最后,这是在浏览器中指定URL的结果:

首先使用/dis/trackingchannels

TrackingChannels Index

第二位/dis/trackingchannels/test

TrackingChannels Test

在没有看到你的项目的情况下我唯一可以说的是仔细检查URL是否与正确的路线匹配。为此,您可以使用Phil Haack's RouteDebugger