首页 / ASP.NET Core / 正文

[ASP.NET Core Razor Pages系列教程]ASP.NET Core Razor Pages PageModel处理程序方法的返回类型(ActionResult)(12)

7070 发布于: 2018-12-13 读完约需6分钟

ASP.NET Core Razor Pages PageModel处理程序方法的返回类型(ActionResult)

PageModel处理程序方法支持的返回类型

《ASP.NET Core Razor Pages中的处理程序方法(Handler Methods)》一节中,我们了解了Razor Pages应用程序开发中的处理程序方法,本节介绍的返回类型即为基于处理程序方法的返回类型。

Razor Pages中处理程序方法的返回类型支持主要有:

  • void:无返回类型
  • IActionResult

其中,IActionResultActionResult均位于命名空间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实现的所有支持的返回类型的列表:

action-return-type-in-aspnet-core-razor-pages-tutorial
action-return-type-in-aspnet-core-razor-pages-tutorial
action-return-type-in-aspnet-core-razor-pages-tutorial
action-return-type-in-aspnet-core-razor-pages-tutorial

好了,本节ASP.NET Core Razor Pages返回类型(ActionResult)的内容就为大家介绍到这里了。

我是Rector,我们下节再见。

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [Bootstrap]Bootstrap中如何使用jQuery实现下拉菜单(dropdown menu)在鼠标悬停时自动下拉展开菜单选项?

下一篇: [ASP.NET Core Razor Pages系列教程]ASP.NET Core Razor Pages中的Program程序入口文件(13)

本文永久链接码友网 » [ASP.NET Core Razor Pages系列教程]ASP.NET Core Razor Pages PageModel处理程序方法的返回类型(ActionResult)(12)

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册