ASP.NET MVC маршрутизирует два параметра со статической строкой между ними
-
21-09-2019 - |
Вопрос
Это мой маршрут:
routes.MapRoute(null,
"shelves/{id1}/products/{action}/{id2}",
new { controller = "Products", action = "List", id1 = "", id2 = ""});
Мысль заключается в том, что вы можете сделать что-то подобное этому:
http://server/shelves/23/products/edit/14
И иметь возможность редактировать товар 14 на полке 23.Проверяя это с помощью Отладчик маршрутов, путь соответствует маршрутизации, но когда я пытаюсь перейти к нему с выключенным Route Debugger, он показывает мне ошибку HTTP 404.Кто-нибудь знает, почему это происходит?
Решение
Ну, для начала, эта строка id1= "" будет проблематичной, потому что вы не можете сделать что-то необязательное, чего нет в конце.
Я только что попробовал это в своей системе, и это работает просто отлично.
Это и есть маршрут:
routes.MapRoute(
"shelf-route",
"shelves/{id1}/products/{action}/{id2}",
new { controller = "Products", action = "List", id2 = "" }
);
Это контроллер:
public class ProductsController : Controller
{
public string List(string id1, string id2)
{
return String.Format("ID1 = {0}, ID2 = {1}", id1, id2);
}
}
Я пробовал такие URL-адреса, как:
http://localhost:14314/shelves/23/products/list/14
http://localhost:14314/shelves/23/products
И они работали просто отлично.
Когда вы пробовали использовать URL-адрес с надписью "редактировать", вы не забыли выполнить действие редактирования?Если нет действия редактирования, вы получите значение 404.