ASP.NET MVC Маршрутизация двух параметров со статической строкой между ними
Это мой маршрут:
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, путь совпадает с маршрутизацией, но когда я пытаюсь перейти к нему с отключенным Route Debugger, он показывает ошибку HTTP 404. Кто-нибудь знает, почему это происходит?
1 ответ
Ну, для начала, эта строка 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: // локальный: 14314 / полки / 23 / Продукты / список / 14
Http: // Localhost: 14314 / полки / 23 / продукты
И они работали просто отлично.
Когда вы пробовали URL-адрес с надписью "изменить", вы не забыли сделать действие "Изменить"? Если нет действия Изменить, вы получите 404.