Как настроить ASP. NET MVC маршрутизацию в C#? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть вопрос о маршрутизации в ASP. NET MVC.

Я хочу, чтобы в моем приложении были хорошие URL-адреса, и поэтому я использую маршрутизацию как

context.MapRoute(
     name: "ManageProducts_Home",
     url: "Eshop/ManageProducts/{eshopId}",
     defaults: new { controller = "ManageProducts", action = "Home", AreaName = "Eshop" }
);

который дает мне хорошие URL, такие как

https://localhost:44381/Eshop/ManageProducts/22

, что здорово!

Тогда у меня есть другой маршрут:

context.MapRoute(
     name: "ManageProducts_AddProduct",
     url: "Eshop/ManageProducts/AddProduct/{eshopId}/{topCategoryId}",
     defaults: new { controller = "ManageProducts", action = "AddProduct", AreaName =  "Eshop" }
);

, который производит этот URL:

https://localhost:44381/Eshop/ManageProducts/AddProduct/22/1

Хорошо, пока все хорошо.

Но на второй странице (AddProduct) мне нужно обновить sh некоторое частичное представление через AJAX, которое я называю вот так

$("._SelectCategory").load("/Eshop/ManageProducts/_SelectCategory", { categoryId: categoryId });

Конечно, в контроллере есть действие _SelectCategory, которое принимает параметр categoryId.

Проблема в том, что этот вызов перехватывается первой маршрутизацией и завершается неудачно с отсутствующим исключением eshopId в действии Home, то есть этот вызов не go к маршрутизации по умолчанию, которая у меня есть

context.MapRoute(
     "Eshop_default",
     "Eshop/{controller}/{action}/{id}",
     new { action = "Index", id = UrlParameter.Optional }
);

Мне нужен совет, как настроить маршрутизацию в представлении AddProduct работает ajax Звоните.

Спасибо

1 Ответ

0 голосов
/ 21 апреля 2020

используйте пустой API-интерфейс Web API и укажите там более эффективные маршруты, например: в контроллере ManageProducts

[HttpGet]
[Route("api/Eshop/ManageProducts/{eshopId}")]

В настройках мясного запуска Startup.cs добавьте следующее: app.Use Mvc () ;

...