Есть action Details(int?id ...) и к нему можно обратится по следующим путям:
Home/Details/id
page/id
page/id/slug
И он вернет страницу с теми же путями. пример:
Запрос: page/5 Ответ: page/5
Мне нужно в этом action переопределить путь, что бы он возвращал всегда последний, Пример:
Запрос: page/5 Ответ: page/5/slug
action знает о slug(достает из бд по id),
Это возможно сделать? Как?
Перепробовал много вариантов но Redirect не происходит. Возвращает ошибку 500
public async Task<IActionResult> Details(int? id)
{
if (TempData["ReturnData"] != null)//сюда даже не заходит
{
return View(TempData["ReturnData"]);
}
var returnData = new{...};
if (RouteData.Values["slug"] == null && ! string.IsNullOrEmpty(returnData.slug))
{
TempData["ReturnData"] = returnData;
var redirect = $"/page/{returnData.id}/{returnData.slug}";//тут перепробовал 100500 вариантов...
return Redirect(redirect); // пробовал также RedirectToRoute и RedirectToAction
}
return View(returnData);
}
...
routes.MapRoute(
"Slug",
"page/{id}/{slug?}",
new { controller = "Home", action = "Details" }
);
return Redirect("page/id/slug");
Сборка персонального компьютера от Artline: умный выбор для современных пользователей