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

时间:2017-02-24 16:51:00

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

我已经在我的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) { ... }

我使用以下网址呼叫操作:http://localhost:51650/Home/SendToken/platform/token/uid

1 个答案:

答案 0 :(得分:1)

添加路线的顺序非常重要。第一条匹配的路线获胜。

确保在更多常规路线之前添加此添加的路线,否则它们将与另一条未按预期填充占位符的路线匹配。

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"