Как перенаправить на контроллер со значением параметра в маршруте - PullRequest
0 голосов
/ 15 мая 2019

У меня есть приложение asp.net core MVC 2.2 с маршрутизацией ниже, настроенной в startup.cs

        app.UseMvc(routes =>
        {
            routes.MapRoute(
              name: "areas",
              template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
            );
        });

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

Затем в Author Controller у меня есть метод действия, который перенаправляет пользователя на другой маршрут, передавая параметр

[Area("Tasks")]
public class AuthorController: Controller
{
   [HttpPost]
   public async Task<IActionResult> Preview(AuthorModel model)
   {
      return RedirectToActionPermanent("Index", "Preview", new { area = "Tasks", id=model.id});
   }
}

Это создает маршрут /Tasks/Preview?id=1

Тогда в Preview контроллере у меня есть

[Area("Tasks")]
public class PreviewController : Controller
{
    [HttpGet]        
    public async Task<IActionResult> Index(int templateID)
    {
        // do something here to get model
        return View(model);
    }
}

Это работает нормально.

Однако я хочу, чтобы id передавался как значение маршрута, а не как строка запроса. Так что маршрут должен выглядеть так: /Tasks/Preview/1

Что мне нужно изменить?

...