MVC路由在URL中删除/索引

mar*_*rry 5 c# asp.net-mvc optional-parameters asp.net-mvc-routing asp.net-mvc-4

我有一个在运行时生成的动态链接的动态列表,如下所示:

@Html.ActionLink(x.Name, "Index", "User", new { x.ID }, null)
Run Code Online (Sandbox Code Playgroud)

所以我在用户控制器上点击Index方法.

我也有我的RouteConfig.cs(它是一个MVC4应用程序)设置如下:

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

        routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

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

        routes.MapRoute(
            name: "",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "User", action = "Index", id = UrlParameter.Optional }
        );
    }
Run Code Online (Sandbox Code Playgroud)

这给了我链接server/application/User/Index/1列表中的链接.

在列表生成和/或路由文件中我需要做什么才能将其更改为server/application/User/1

dov*_*ove 11

添加不需要操作但不会与其他路由冲突的路由

routes.MapRoute("User", "User/{id}", 
                         new { controller = "User", action = "Index" });
Run Code Online (Sandbox Code Playgroud)