问题描述
[Route("Users")]
public class UserRegistrationController : Controller
{
[HttpGet("details/{userId}")]
public async Task<IActionResult> UserDetails(Guid userId)
{
// .....
}
[HttpPost("Save")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> SaveUser(UserVM userVM)
{
// ......
return RedirectToAction("details","Users",new { userId = userVM.UserId });
}
}
如果我保存用户 redirectToAction 生成 userId 作为查询字符串,这会产生一个问题。
我的意思是而不是
https://localhost:5001/Users/Details/5de304c7-4c69-4819-c879-08d90306b555
重定向到操作创建的 URL 为
https://localhost:5001/Users/Details?userId=5de304c7-4c69-4819-c879-08d90306b555
导致 404 错误。
我该如何解决这个问题?我想在路由中传递 userId 如下
https://localhost:5001/Users/Details/5de304c7-4c69-4819-c879-08d90306b555
提前致谢。
解决方法
问题是,操作方法 UserDetails 需要添加路由 [Route("details")] 这将解决问题。
[Route("Users")]
public class UserRegistrationController : Controller
{
[HttpGet("details/{userId}")]
[Route("details")]
public async Task<IActionResult> UserDetails(Guid userId)
{
// .....
}
[HttpPost("Save")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> SaveUser(UserVM userVM)
{
// ......
return RedirectToAction("details","Users",new { userId = userVM.UserId });
}
}