如何解决asp.net核心属性路由问题
[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 });
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。