【问题标题】:Asp.net MVC Routelink null controller parameterAsp.net MVC Routelink 空控制器参数
【发布时间】:2015-06-09 18:11:08
【问题描述】:

我有两条路线,默认一条

  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,但参数值保持为空。为什么?

谢谢

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-4 routing


    【解决方案1】:

    你不能有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 }
            );
    

    【讨论】:

    • 确实可行,你会认为命名路由会克服这个问题,但事实并非如此。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2015-09-08
    • 2020-10-12
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    相关资源
    最近更新 更多