[ПРИМЕЧАНИЕ: я использую ASP.NET MVC2 RC2.]
У меня есть такие URL:
/ клиентов / 123 / заказы / 456 / пункты / индекс
/ клиентов / 123 / заказы / 456 / пункты / 789 / редактировать
В моей таблице маршрутизации сначала перечислены наиболее специфичные маршруты, поэтому я получил:
// customers/123/orders/456/items/789/edit
routes.MapRoute(
"item", // Route name
"customers/{customerId}/orders/{orderId}/items/{itemId}/{action}", // URL with parameters
new { controller = "Items", action = "Details" }, // Parameter defaults
new { customerId = @"\d+", orderId = @"\d+", itemId = @"\d+" } // Constraints
);
// customers/123/orders/456/items/index
routes.MapRoute(
"items", // Route name
"customers/{customerId}/orders/{orderId}/items/{action}", // URL with parameters
new { controller = "Items", action = "Index" }, // Parameter defaults
new { customerId = @"\d+", orderId = @"\d+" } // Constraints
);
Когда я попадаю на страницу «Изменить», я хочу получить ссылку обратно на страницу «Индекс». Итак, я использую:
ActionLink("Back to Index", "index")
Однако, поскольку есть идентификатор элемента окружения, это приводит к URL:
/ клиентов / 123 / заказы / 456 / пункты / 789 / индекс
... тогда как я хочу, чтобы он "забыл" идентификатор элемента и просто использовал:
/ клиентов / 123 / заказы / 456 / пункты / индекс
Я пытался переопределить идентификатор элемента следующим образом:
ActionLink("Back to Index", "index", new { itemId=string.empty })
... но это не совсем работает. Что это дает мне:
/ клиентов / 123/456 / заказы / пункты? Itemid = 789
Как мне убедить ActionLink
"забыть" идентификатор предмета?
РЕДАКТИРОВАТЬ : фиксированный вопрос - я имел в виду «заказ», где я имел в виду «элемент».
РЕДАКТИРОВАТЬ : добавлено подробное описание того, почему itemId = string.empty не работает.