ASP.NET MVC:所有控制器值都传递为空

ASP.NET MVC: all controller values are passed null

我已将新操作添加到我的 asp.net mvc 应用程序并在 RouteConfig.cs.

中为其添加特定规则

但所有参数都作为 null 传递。

这是我的路线规则:

routes.MapRoute(
     "toekn_submit_route",
    "{controller}/SendToken/{platform}/{token}/{uid}", 
    new { controller = "Home", action = "SendToken" }
    , new[] { "MvcApplication.Controllers" }
);

这里是动作减速:

public JsonResult SendToken(string platform, string token, string uid) { ... }

我使用这个 URL 调用操作:http://localhost:51650/Home/SendToken/platform/token/uid

添加路由的顺序很重要。第一个匹配的路线获胜。

确保将这条添加的路由添加到更通用的路由之前,否则它们将被另一条未按预期填充占位符的路由匹配。

routes.MapRoute(
    name: "token_submit_route",
    url: "{controller}/SendToken/{platform}/{token}/{uid}", 
    defaults: new { controller = "Home", action = "SendToken" },
    namespaces: new[] { "MvcApplication.Controllers" }
);

//...other more general routes.

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

例如,如果 Default 路由放在令牌路由之前,它仍然会匹配 http://localhost:51650/Home/SendToken/platform/token/uid

其中

controller = "Home", 
action = "SendToken", 
id = "platform/token/uid"