.NET Core:如何获取AccountController中Register动作的访问路由路径?
解决方法
问题核心在于两点:你的POST动作未匹配GET端的自定义路由,同时表单默认会提交到控制器+动作的默认路径(Account/Register)。按以下步骤修改即可解决:
1. 给POST动作添加对应自定义路由
将GET动作上的四个路由属性同步加到POST动作上,让POST请求能匹配/go、/ex、/men、/ing这些路径:
[AllowAnonymous] [HttpPost("/go", Order = 2)] [HttpPost("/ex", Order = 2)] [HttpPost("/men", Order = 2)] [HttpPost("/ing", Order = 2)] public async Task<IActionResult> Register(RegisterViewModel model) { model.Code = Request.Path.Value; // 现在会返回实际访问的路径,比如/men var platformResponse = await _factory.RegisterAsync(model); return View(); }
2. 确保表单提交到当前路径
在Register视图中,将表单的action设置为当前请求的路径,避免表单默认提交到Account/Register:
<form action="@Request.Path" method="post"> <!-- 你的表单字段 --> </form>
如果使用Tag Helper,也可以这样写:
<form asp-action="Register" asp-route="" method="post"> <!-- 表单字段 --> </form>
完成以上修改后,POST请求的路径会和用户访问的GET路径保持一致,Request.Path.Value就能正确获取到/men、/ing这类实际访问的路由路径。
内容的提问来源于stack exchange,提问作者jrsometing
相关产品推荐
相关产品推荐

