如何使用路由中的参数值重定向到控制器

时间:2019-05-14 21:00:53

标签: asp.net-core asp.net-core-2.2

我有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控制器中,我具有通过传递参数将用户重定向到另一条路线的操作方法

[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

我需要更改什么?

0 个答案:

没有答案