ASP.NET MVC: все значения контроллера передаются пустыми

Я добавил новое действие в мое приложение 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

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"
Другие вопросы по тегам