繁体   English   中英

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

[英]How does one create Razor Page Urls in C# code?

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

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

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

在 T4MVC 中,我可以使用以下命令将此控制器操作添加到我的视图模型中:

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 文件夹中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM