Jia*_*nYA 4 c# asp.net-core-mvc asp.net-core
这是我的路由项目:
context.Result = new RedirectToRouteResult(new RouteValueDictionary(new {area="Identity", controller = "Account / Login", action = "Index" }));
Run Code Online (Sandbox Code Playgroud)
当应用程序启动时,这就是我在 url 中得到的内容:
如何从我的网址中删除 %2f?
当尝试从 生成 URL 时RouteValueDictionary,ASP.NET Core 会将 编码为/,因为它是URL 段%2F的一部分并且具有特殊含义(它是段分隔符)。
Account/Login在此上下文中作为控制器名称无效,只是因为作为C# 标识符的一部分无效(即作为类名称无效)。/Accounts/LoginController
当您尝试路由到Account/Login该Identity区域时,我现在假设您正在使用 ASP.NET Core Identity 的默认 UI,并且您的意图是路由到默认区域中的/Account/Login Razor 页面Identity。为了做到这一点,至少有几个选择:
设置page路由值而不是controller路由值:
context.Result = new RedirectToRouteResult(
new RouteValueDictionary(new { area = "Identity", page = "/Account/Login" }));
Run Code Online (Sandbox Code Playgroud)使用RedirectToPageResult而不是RedirectToRouteResult:
context.Result = new RedirectToPageResult("/Account/Login", new { area = "Identity" });
Run Code Online (Sandbox Code Playgroud)我建议在此处使用该RedirectToPageResult选项,因为它有一个更明确的意图:这是针对 Razor 页面而不是 MVC 控制器。
| 归档时间: |
|
| 查看次数: |
2313 次 |
| 最近记录: |