Asp.Net Core 响应结果中默认返回值为IActionResult,我们可以再Action返回简单字符串、实体对象、视图等多种数据,这些结果都被封装在IActionResult中,对于不同的返回结果 mvc框架提供了多种类型结果实现了此接口。
下表中列出了不同返回类型的返回结果
动作类型 | 行为 | 结果 |
---|---|---|
EmptyResult | 如果Action方法返回类型为void,或者返回值为Null,最终生成的就是一个EmptyResult对象 | |
ContentResult | Content(string) | 返回一串字符串 |
FileContentResult : FileResult | File(byte[] fileContents, string contentType, string fileDownloadName) | 由于FileContentResult是根据字节数组创建的,当我们需要动态生成响应文件内容(而不是从物理文件中读取)时,FileContentResult是一个不错的选择 |
FilePathResult : FileResult | File(string fileName, string contentType, string fileDownloadName) | 响应文件的路径通过只读属性FileName表示,该属性在构造函数中被初始化。在实现的WriteFile方法中,FilePathResult直接将文件路径作为参数调用当前HttpResponse的TransmitFile实现了针对文件内容的响应 |
FileStreamResult : FileResult | File(Stream fileStream, string contentType, string fileDownloadName) | 在实现的WriteFile方法中,FileStreamResult通过指定的文件流读取文件内容,并最终调用当前HttpResponse的OutputStream属性的Write方法将读取的内容写入当前HTTP响应的输出流中 |
JsonResult | Json(Object) | 返回Json格式数据 |
RedirectToResult | Redirect(Url) RedirectToAction(“Index”, “Home”, new { id = “100”, name = “liu” }); / RedirectPermanent(Url) | Redirect/RedirectPermanent方法用于创建重定向到指定URL的RedirectResult(302:301) ; RedirectToAction/RedirectToActionPermanent用于创建重定向到指定的目标Action的RedirectResult/RedirectToRouteResult |
RedirectToRouteResult | RedirectToRoute/RedirectToRoutePermanen RedirectToRoute(“Default”, new { controller = “Home”, action = “Index”}); | RedirectToRoute / RedirectToRoutePermanent创建的RedirectResult/RedirectToRouteResult对象是针对注册的某个路由的 |
ViewResult | View() | 接收视图引擎的响应 |
PartialViewResult | View() | 接收分部视图引擎的响应 |
HttpUnauthorizedResult | 抛出401错误 | |
JavaScriptResult | 返回javascript文件 |
模型对象等,使用产生ActionResult的对象的典型优点就是它以正式的方式封装控制器决策,控制器不必直接在响应中写入其决策结果,只需要返回决策,框架本身获取结果并理解如何将结果进行何种转换以便可以通过HTTP进行发回。
图1:
图2:
以上不一定core支持,没有验证完
参考文章:
https://www.cnblogs.com/artech/archive/2012/08/13/action-result-01.html
https://blog.csdn.net/lomeo23/article/details/52021603
https://blog.csdn.net/pasic/article/details/7110134
https://blog.csdn.net/ken_io/article/details/85711636