为了通过命名路由正确传递MVC动作参数,需要确保该路由的定义包含所有需要传递的参数。例如,如果我们有一个名为“Details”的动作,并且它需要一个ID参数,我们需要确保路由包含“{id}”占位符:
[HttpGet]
[Route("product/details/{id}", Name = "ProductDetails")]
public IActionResult Details(int id)
{
// action code
}
现在我们可以使用该命名路由在控制器中的其他动作中传递ID参数:
[HttpPost]
[Route("product/save")]
public IActionResult Save(ProductViewModel model)
{
// save product code
return RedirectToRoute("ProductDetails", new { id = model.Id });
}
使用RedirectToRoute方法指定要使用的命名路由。传递的参数应该与路由定义中占位符的名称相同。在此示例中,我们将“id”参数传递给名为“ProductDetails”的路由。