MVC маршрутизация: маршрутизация к конкретному методу в контроллере - PullRequest
0 голосов
/ 31 августа 2018

Я не смог получить хорошую информацию о том, как определить маршрут к конкретному действию в выбранном контроллере. MSDN не предоставляет чистую информацию об этом. Существует упоминание о параметре action, но он, похоже, не работает.

То, чего я хочу добиться, это направить путь, например / Vehicles / Check ***, к методу Check в VehiclesController.

Конкретный вызов - / Vehicles / check? LicencePlate = XYZ => VehiclesController -> Check (строка licenePlate)

У меня есть эта карта, но она не работает:

        config.Routes.MapHttpRoute("VehicleTransactions", "Vehicles/Check", 
            new { controller = "Vehicles", action= "Check" });

Можно ли это сделать с помощью MVC?

Спасибо, Радек

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Попробуйте это:

routes.MapRoute(
          name: "VehicleTransactions",
          url: "Vehicles/Check/{licencePlate}",
          defaults: new { controller = "Vehicles", action = "Check", licencePlate = UrlParameter.Optional });

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

Установите маршрутизацию «VehicleTransactions» перед маршрутизацией «Default», потому что в противном случае «Default» перезапишет другую.

Специальные маршруты устанавливаются всегда перед маршрутизацией по умолчанию.

0 голосов
/ 31 августа 2018

MapHttpRoute используется для отображения маршрутов веб-API. Для маршрутов MVC Controller мы обычно используем MapRoute

Итак, предположим

public class VehiclesController : Controller {
    public ActionResult Check(string licenePlate) {
        //...
        return View();
    }
}

Маршрут будет привязан к

routes.MapRoute(
    name: "VehicleTransactions",
    url: "vehicles/check",
    defaults: new { controller = "Vehicles", action= "Check" }
);
...