【发布时间】:2021-04-20 03:47:27
【问题描述】:
我有这个代码:
[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
redirect to action 将 URL 创建为
https://localhost:5001/Users/Details?userId=5de304c7-4c69-4819-c879-08d90306b555
这会导致 404 错误。
我该如何解决这个问题?我想在路由中传递 userId,如下所示
https://localhost:5001/Users/Details/5de304c7-4c69-4819-c879-08d90306b555
提前致谢。
【问题讨论】:
-
userVM.UserId的类型是什么?如果是string,那么试试return RedirectToAction("details", "Users", new { userId = new Guid(userVM.UserId) });。 -
@Karan userVM.UserId 已经是 GUID,因此无需再次创建 Guid。抱歉这个不行
标签: asp.net asp.net-core attributerouting