【发布时间】:2019-03-07 07:13:54
【问题描述】:
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 或求助于的情况下构建更复杂的页面路由魔术字符串?
【问题讨论】:
-
Microsoft 建议使用 Razor Pages 而不是 MVC 前进 这似乎很奇怪。我将 Razor Pages 视为基于 MVC 的轻量级 MVC 版本。它不是替代品。
-
参见docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/…,“是新应用程序开发的首选方法”
-
docs.microsoft.com/aspnet/core/tutorials/razor-pages/search 不包括:不需要额外的布线吗?
-
文档页面涵盖了非常简单的场景,其中路由都是相对的,并且可以在视图中设置查询参数或处理程序/操作。我们的应用程序要复杂得多。它是一个多租户、多用途的 CMS 系统,每个页面可以有多个导航菜单和其他上下文菜单。路由携带上下文参数,允许用户切换到不同的应用程序区域并再次返回。我们使用构建器生成导航菜单,这些构建器采用上下文对象并生成菜单。所以现在这是由控制器而不是视图来协调的。
-
MS 似乎暗示可以使用 Razor Pages 构建任何类型的应用程序。我们认为不会,但我们愿意试一试。这里有一些讨论github.com/aspnet/Docs/issues/6146
标签: c# razor-pages