ASP.NET Core Razor Pages PageModel处理程序方法的返回类型(ActionResult)
PageModel处理程序方法支持的返回类型
在《ASP.NET Core Razor Pages中的处理程序方法(Handler Methods)》一节中,我们了解了Razor Pages应用程序开发中的处理程序方法,本节介绍的返回类型即为基于处理程序方法的返回类型。
Razor Pages中处理程序方法的返回类型支持主要有:
- void:无返回类型
- IActionResult
其中,IActionResult
和ActionResult
均位于命名空间Microsoft.AspNetCore.Mvc
中。支持的返回类型包含我们日常用到的如:返回Razor视图页面,返回文件内容,或者重定向到其他的处理程序方法甚至重定向到一个外部的页面等等。
除此之外,我们还可以自定义实现ActionResult
来返回需要的数据类型。
由Visual Studio默认生成的PageModel类是继承自PageModel
基类的,这个基类实现了常用的返回类型,这里摘取部分已实现的返回类型,如:
PageResult Page()
PhysicalFileResult PhysicalFile()
RedirectResult RedirectPermanent()
RedirectToPageResult RedirectToPage()
RedirectToPageResult RedirectToPagePermanent()
StatusCodeResult StatusCode()
ObjectResult StatusCode()
继承了基类PageModel
便可直接使用基类中提供的返回类型方法,如下:
[/Pages/ActionReturnType/Index.cshtml.cs]*
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace RazorPagesDemoApplication.Pages.ActionReturnType
{
public class IndexModel : PageModel
{
public ActionResult OnGet()
{
return Page();
}
}
}
以上示例使用了PageResult Page()
方法来返回到当前请求的Razor视图页面。
由于PageModel类中的处理程序方法返回类型可以是void
或者IActionResult
,并且ActionResult
继承至IActionResult
接口,所以:
public ActionResult OnGet()
可以修改为:
public IActionResult OnGet()
还可以写成:
public PageResult OnGet()
PageResult
类继承至ActionResult
类
在Razor Pages中,所有实现了接口IActionResult
的类均可作为处理程序方法的返回类型。比如我们要重定向到指定的页面,可以这样:
public IActionResult OnGetRedirect()
{
return RedirectToPage("/HandlerMethods/Single");
}
注:
RedirectToPage()
方法中的page
参数的路径为相对Pages目录的路径地址
当然,我们也可以创建一个ActionResult
的实例,比如上面的OnGetRedirect()
方法,也可以写成:
public IActionResult OnGetRedirect()
{
//return RedirectToPage("/HandlerMethods/Single");
return new RedirectToPageResult("/HandlerMethods/Single");
}
但这样做显得没有之前的写法那样简洁,因为PageModel
基类提供了RedirectToPage
的方法,这个方法会自动创建一个返回重定向类型的实例,我们传入参数即可。
以下是ActionResult
实现的所有支持的返回类型的列表:
好了,本节ASP.NET Core Razor Pages返回类型(ActionResult)的内容就为大家介绍到这里了。
我是Rector,我们下节再见。
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册