asp core изменить путь в Action

222
03 мая 2018, 06:56

Есть 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),

Это возможно сделать? Как?

UPDATE

Перепробовал много вариантов но 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" } 
        );
Answer 1
return Redirect("page/id/slug");
READ ALSO
Регулярные выражения C# числа

Регулярные выражения C# числа

Условие задачи почти полностью выполнено, застрял на моменте когда нужно вывесли кол-во нулей из всех вводимых чисел, не понимаю синтаксиса...

263
Как эмулировать нажатие на кнопку в приложении WPF C#

Как эмулировать нажатие на кнопку в приложении WPF C#

Подскажите, как в приложении WPF эмулировать программно нажатие на кнопку Button левой клавишей мыши? Использовать button1PerformClick() не предлагать,...

187
SaveChanges() как работает?

SaveChanges() как работает?

При использовании на контексте SaveChanges() или SaveChangesAsync() после добавления какого-то элемента в экземпляр контекста изменения сохраняются только...

213
DateTime.CompareTo() можно ли сделать сравнение без учета миллисекунд?

DateTime.CompareTo() можно ли сделать сравнение без учета миллисекунд?

DateTimeCompareTo(Date) сравнивает экземпляр из базы данных, и Date-данные которые пришли от клиента

235