Asp.net MVC Routelink 空控制器参数

Asp.net MVC Routelink null controller parameter

我有两条路线,默认一条

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

我又加了一条路由,有时参数会是一个字符串

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

当我在 RouteLink 中使用 "ByName" 路由时,URL 没问题,但我的控制器中的参数为空

在视图中:

@Html.RouteLink(application.Nom, "ByName", new {controller= "Packaging", action = "EditApplication", name = application.Nom})

控制器

public ActionResult EditApplication(string name)

URL 结果很好:.../Packaging/EditApplication/VisualStudio,但参数值保持为空。为什么?

谢谢

您不能有 TWO 个具有相同参数和相同定义的路由,第一个优先。相反,您需要在路由中具有如下所示的特定约束。

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

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