首页 > 解决方案 > 为什么 PageModel 和 ControllerBase 使用不属于它们的 ActionResult?

问题描述

我们知道PageModel,MVC 使用的是控制器和动作方法的概念,而不是一个和页面处理程序,但是看一下 PageModel 的源代码:

public abstract class PageModel : IAsyncPageFilter, IFilterMetadata, IPageFilter  {
   ...
   public virtual RedirectToPageResult RedirectToPage(string pageName, string pageHandler, object routeValues, string fragment);
   public virtual RedirectToActionResult RedirectToAction(string actionName, string controllerName, object routeValues, string fragment) 
   ...
}

如果您查看ControllerBase课程:

public abstract class ControllerBase {
   ...
   public virtual RedirectToActionResult RedirectToAction(string actionName, string controllerName, object routeValues, string fragment);
   public virtual RedirectToPageResult RedirectToPage(string pageName, string pageHandler, object routeValues, string fragment);
   ...
} 

我很困惑,为什么 Razor pages 使用 MVC 的东西RedirectToActionResult (controllerName 和 actionName),而 MVC 使用 Razor Page 的东西“XXXToPageResult”例如RedirectToPageResult(pageName,pageHandler)?

标签: c#.netasp.net-coreasp.net-core-mvcrazor-pages

解决方案


您可以在同一个 ASP.NET Core 应用程序中将 MVC 控制器和视图与 Razor 页面混合在一起,因此您应该能够从控制器重定向到 Razor 页面,以及从 Razor 页面重定向到控制器操作。


推荐阅读