为什么 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 重定向到控制器操作。页数。
我们知道 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 重定向到控制器操作。页数。