Backend - HTTP请求的常用返回类型(asp .net core MVC)

目录

[一、ViewResult 类型](#一、ViewResult 类型)

[1. 写法](#1. 写法)

[2. 用途](#2. 用途)

[二、RedirectToActionResult 类型](#二、RedirectToActionResult 类型)

[1. 写法](#1. 写法)

[2. 用途](#2. 用途)

[三、ContentResult 类型](#三、ContentResult 类型)

[1. 写法](#1. 写法)

[2. 用途](#2. 用途)

[四、OkObjectResult 类型](#四、OkObjectResult 类型)

[1. 写法](#1. 写法)

[2. 用途](#2. 用途)

五、JsonResult

[1. 写法](#1. 写法)

[2. 用途](#2. 用途)


以下介绍几种 IActionResult 的类型

一、ViewResult 类型

1. 写法

cs 复制代码
// AccountController类下的Login方法
public IActionResult Login()
{
    var model = new LoginViewModel();
    return View(model); // 对应Views/Account/Login.cshtml
}

2. 用途

返回 Razor 页面,一般在 MVC 控制器中使用。

常用于登录页、主页、表单页等需要视图渲染的场景。

二、RedirectToActionResult 类型

1. 写法

cs 复制代码
public IActionResult Logout()
{
    HttpContext.SignOutAsync();
    return RedirectToAction("Login", "Account");
}

2. 用途

服务器端重定向到另一个 Action。

常用于登录后跳转、提交表单成功后重定向到主页、退出登录后返回登录页。

三、ContentResult 类型

1. 写法

cs 复制代码
public IActionResult ForceLogout()
{
    return Content("<script>window.top.location.href='/Account/Login';</script>", "text/html");
}

2. 用途

直接返回一段字符串作为 HTTP 响应。

常用于用户登录超时、将当前页面跳出 iframe 、让顶层窗口跳转(而不是标签页内部)。

四、OkObjectResult 类型

1. 写法

cs 复制代码
[HttpGet]
public IActionResult GetMenuTree()
{
    var tree = _menuService.GetTree();
    return Ok(tree);
}

在tree传入前端时,会自动处理成JSON格式

javascript 复制代码
{
  "id": 1,
  "name": "系统管理",
  "children": [...]
}

2. 用途

返回 HTTP 200 状态的 JSON 数据。

常用于Web API 推荐写法、以及Layui、Vue、React 前端请求数据。

五、JsonResult

1. 写法

cs 复制代码
public IActionResult GetUserPermissions()
{
    var rp = _userService.GetRolePermission(User.Identity.Name);
    return Json(new { menus = new List<int> { rp.MenuId }, buttons = rp.ButtonCodes });
}

在传入前端时,会处理成JSON格式

javascript 复制代码
{
  "menus": [1, 2, 3],
  "buttons": ["Add", "Edit", "Delete"]
}

2. 用途

直接返回 JSON 格式内容。

Ok()很像,Ok(object) 更符合 REST 风格,Json(object) 是 MVC 传统写法。

相关推荐
chao18984411 分钟前
完整MES系统实现 (C# 客户端服务器)
服务器·windows·c#
身如柳絮随风扬34 分钟前
GET请求能带Body吗?GET与POST的核心区别全解析
http
月昤昽37 分钟前
autocad二次开发 2.旋转
c#·autocad·autocad二次开发
rockey6271 小时前
基于AScript的python3脚本语言发布啦!
python·c#·.net·script·python3·eval·expression·function·动态脚本
工程师0071 小时前
C# 字符串不可变性 + 字符串驻留池原理
c#·字符串拘留池
Gh0st_Lx6 小时前
【6】为什么有了 HTTP/1.1 ,还要 HTTP/2 和 HTTP/3
网络协议·http·php
唐青枫7 小时前
内存为什么越来越高?C#.NET GC 详解:分代回收、LOH、终结器与性能优化实战
c#·.net
学编程就要猛7 小时前
JavaEE初阶:网络原理-HTTP(下)
网络·网络协议·http
xiaohe077 小时前
C#数据库操作系列---SqlSugar完结篇
网络·数据库·c#
网络系统管理8 小时前
解决edge浏览器访问https网站报错问题
网络协议·http·https