У меня есть вопрос о маршрутизации в 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 Звоните.
Спасибо