LinkCoreX内置了几类返回值方案,你可以根据开发需要选择 关键字:Router,NETCORE,路由
[[toc]]
返回类型 IActionResult
字符串 String
StringActionResult 内容以字符串类型输出到前端,常用于后台直接渲染HTML页面的项目
return new StringActionResult{ Data = "Hello LinkCodeX!" };
二进制 Bytes
BytesActionResult 用于要求输出图片内容时
// 默认JPEG
return new BytesActionResult { Data = 图片二进制数据 };
// PNG
return new BytesActionResult { Data = 图片二进制数据, ResultType = IActionResultType.PNG };
默认类型 Default
DefaultActionResult 是上面两种类型的父类,唯一的区别就是 ResultType
public enum IActionResultType
{
// 字符串类型
TEXT = 0,
JSON = 1,
XML = 2,
// 二进制图片
JPEG = 10,
PNG = 11
}
DefaultActionResult 完整结构如下
public class DefaultActionResult : IActionResult
{
virtual public string Code { get; set; }
virtual public object Data { get; set; }
virtual public string Message { get; set; }
// 服务器状态码
[JsonIgnore]
virtual public int StatusCode { get; set; } = 200;
// 支持 IActionResultType.JSON
[JsonIgnore]
virtual public IActionResultType ResultType { get; set; } = IActionResultType.JSON;
[JsonIgnore]
virtual public bool? CamelCase { get; set; }
[JsonIgnore]
virtual public string Redirect { get; set; }
[JsonIgnore]
virtual public string AllowOrigin { get; set; }
[JsonIgnore]
virtual public string AllowHeaders { get; set; } = "*";
[JsonIgnore]
public Dictionary<string, string> Headers { get; set; }
[JsonIgnore]
public JsonSerializerOptions JsonOptions { get; set; }
}
重定向 Redirect
了解了 DefaultActionResult 的结构后,应该可以猜到重定向的方法了吧 :wink:
return new DefaultActionResult { Redirect = "http://www.baidu.com" };
跨域管理
关于跨域建议可以看下
return new DefaultActionResult { AllowHeaders = "*", AllowOrigin = "https://m4l.cn", Headers = null };
JSON (返回)
return new DefaultActionResult { Code = "0000", Data = "Hello LinkCodeX!" };
前端接收如下:
{
"code": "0000",
"data": "Hello LinkCodeX!",
"message": null
}
::: tip 如果希望返回的数据键保持驼峰,可以加上 CamelCase = true :::
内置的 JSON 的封装 JSONDocument 继承了 System.Text.Json 所以通过 DefaultActionResult.JsonOptions 可以对输出 JSON 内容进行更多设置
return new DefaultActionResult { JsonOptions = System.Text.Json.JsonSerializerOptions.Default };
JSON (传参)
回想下上一章的路由传参中我们提到路由方法参数来接收对象数据。 如何用参数直接接收对象呢?只需要将传参地址中的 md 传为 JSON 值!
public IActionResult GetDetail(Model md)
{
// Code Todo...
}