Asp.net mvc 4 自定义路由.NETMVC4

Asp.net mvc 4 自定义路由.NETMVC4,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc 4,Asp.net Mvc Routing,我试图在一些自定义路由上绞尽脑汁,但当我尝试访问我的站点时,我得到了404 我已经在我的global.asax中尝试了这两种方法 public static void RegisterRoutes(RouteCollection routes) { routes.MapRoute( name: "Show", url: "{controller}/{action}/{trip}/{year}/{user}", defaults :new

我试图在一些自定义路由上绞尽脑汁,但当我尝试访问我的站点时,我得到了404

我已经在我的global.asax中尝试了这两种方法

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(
        name: "Show",
        url: "{controller}/{action}/{trip}/{year}/{user}",
        defaults :new  { controller = "Home", action = "Show" }
        );
}

以下是控制器操作方法:

public ActionResult Show(string trip, string year, string user)
{
    ViewBag.imagepath = "/Uploadedimages/" + trip + "/" + year + "/" + user + "/";
    return View();
}
下面是我如何尝试点击它的示例URL:

http://localhost:31065/home/show/green/2013/hunt
我的global.asax中的这两种方法都不起作用。我读过的每一篇文章都会让我相信这是可行的


我在这里遗漏了什么?

这是我的
RouteConfig
,它与URL
http://localhost:31065/home/show/green/2013/hunt

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

        routes.MapRoute(
            name: "Show",
            url: "{controller}/{action}/{trip}/{year}/{user}",
            defaults: new { controller = "Home", action = "Show" }
        );

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

404说它找不到什么?我添加了你的第一条路线和你的控制器动作,这个URL工作得很好。您的
Show
视图是否位于
Views
文件夹中的
Home
文件夹中,例如
Views\Home\Show.cshtml
?是的,Show视图在那里。有趣的是,如果我只是去/home/show,页面就会出现。我已经确定我已经重新构建了解决方案,但它仍然不起作用。你没有同时使用这两种方法,是吗?您是否在默认路线之前定义了路线?doh!事实证明,我的项目中的路由发生在一个不同的文件中(不同于global.asax),名为reouteconfig.cs。继续创建一个答案,我会接受它,因为你让我跳出了这个解决方案的框框…谢谢。
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Show",
            url: "{controller}/{action}/{trip}/{year}/{user}",
            defaults: new { controller = "Home", action = "Show" }
        );

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