c# - 如何在 C# 代码中创建 Razor Page Urls?

标签 c# razor-pages

Microsoft 在 ASP.NET Core 2.0 中引入了 Razor Pages 作为 MVC 的替代方案。我们希望将我们的旧版 ASP.NET MVC 5 应用程序迁移到 NET Core,Microsoft 建议使用 Razor Pages 而不是 MVC 向前推进。

我们目前正在使用 T4MVC 框架来帮助生成强类型的 ActionResult 对象来构建复杂的导航菜单。导航菜单是使用 View 模型创建的,该 View 模型是 ActionResult 路由的链接列表,其中每个路由都可能非常复杂,例如:

https://example.com/Client/1/Documents/2/Edit?p1=123&p2=ABC&h2=456

在 T4MVC 中,我可以使用以下命令将此 Controller 操作添加到我的 View 模型中:

menu.Add(MVC.Client.Documents.Edit(cliendId, documentId, requestParameters));

ASP 文档没有详细介绍如何在代码中创建路由,除了一个简单的: RedirectToPageResult("./Index") 那么如何在没有 T4MVC 的好处或诉诸魔法字符串的情况下构建更复杂的页面路由?

最佳答案

如果您知道 razor 页面相对于 Pages 文件夹的路径名称(这是默认设置),则可以轻松地对 URL 进行硬编码。例如:

 public IActionResult OnPostGoogle(string provider)
        {

            var redirectUrl = "https://localhost:5001/UserPages/ExternalLoginCallback";
            var properties = signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
            return new ChallengeResult(provider, properties);
        }
这是一种配置 Google 登录并将用户重定向到 ExternalLoginCallback 页面的方法。
这里我有一个位于 Pages/UserPages 中的 ExternalLoginCallback.cshtml.cs。
因此,您可以将 PagesFolder 中页面的相对路径附加到您的网站地址或在我的情况下为 localhost,您将获得页面的完整 url。这就是他们在示例 RedirectToPageResult("./Index") 中使用的原因,因为 Index.cshtml .cs 直接在 Pages 文件夹中。

关于c# - 如何在 C# 代码中创建 Razor Page Urls?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52603613/

相关文章:

c# - 在 Uri.TryCreate 代码执行后使用 Uri.Absolute 还是使用原始字符串更好?

c# - 如何在 asp.net core razor pages 2.2 中设置日期格式和区域性

asp.net-core - ASP.Net Core Razor Pages 应用程序未绑定(bind)到模型中的属性

c# - 如何添加对 WinForm 项目的引用?

使用 HttpClient 的 C# application/x-www-form-urlencoded OAuth 和 HTTP REST 请求

c# - 进度条没有更新

asp.net-core-2.0 - 如何从子文件夹链接到主页?

C#性能: construct new collection with existing items using constructor or loop?

c# - ASP.NET Core Razor Pages - 复杂模型属性在返回 Page() 后为空

c# - 绑定(bind)项目重置时,Core.NET 选择列表不会在回发时重置