为什么 PageModel 和 ControllerBase 使用不属于它们的 ActionResult?

Why do PageModel and ControllerBase use the ActionResult that doesn't belong to them?

我们知道 MVC 使用的是控制器和操作方法的概念,而不是 PageModel 和页面处理程序,但是查看 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 class:

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 页面使用 MVC 事物 RedirectToActionResult (controllerName 和 actionName),而 MVC 使用 Razor 页面事物“XXXToPageResult”,例如 RedirectToPageResult(pageName, pageHandler)?

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