Что я хочу сделать, это иметь страницу в /Products/Details/{id}
, которая перенаправляет сведения о действиях на ProductsController
, а также страницу редактирования в /Products/Details/Edit/{id}
.
Я попытался сделать это, используя [ActionName("Details/Edit")]
для действия, но это не работает.
У вас нет косой черты в имени вашего действия.
Почему бы не выполнить следующие действия?
Мое предпочтение было бы сделать следующее:
Надеюсь, что это имеет смысл!
Что вы можете сделать, так это. Установите новый маршрут, подобный этому, до маршрута по умолчанию;
routes.MapRoute(
"PRoute",
"{controller}/{action}/{action2}/{id}",
null
);
то в вашем контроллере Products есть действие, подобное этому, обратите внимание, что имена параметров соответствуют именам на маршруте.
public ActionResult Details(string action2, string id)
{
switch (action2)
{
case "edit":
// Do Something.
return View("edit");
case "view":
// Do Something.
return View("view");
default :
// Do Something.
return View("bad-action-error");
}
}
Теперь действие Details будет передано action2 и id из url. Таким образом, URL-адрес, например /products/details/view/ 7, получит действие "view" и "7", и вы можете использовать оператор switch или if на action2, чтобы продолжить обработку. Теперь это можно легко расширить, включив другие под-действия.
Добавьте маршрут, подобный этому ПЕРЕД по умолчанию:
routes.MapRoute(
"DefaultWithDetails",
"{controller}/Details/{action}/{id}"},
null);