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/