控制器操作方法的返回类型有哪些最佳实践?
我有一个保存数据并返回生成的ID的操作方法。将ActionResult返回到int有什么区别和好处?
e.g。
public ActionResult SaveValue(Payment model) {
// Save stuff
return this.Json(id);
}
结束
public int SaveValue(Payment model) {
// Save stuff
return id;
}
如果我要返回一个对象,比如支付模型,我会将其作为json返回,让Json()方法正确转换它。但是,使用简单的值,返回类型本身而不是ActionResult是否正确?
答案 0 :(得分:2)
在你的场景中,它们两者基本相同 - 都返回一个数字。
但是,值得注意的是,响应标头中的 Content-Type 是不同的。
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/10.0
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?RDpcRGV2ZWxvcG1lbnRBcmNoaXZlXERlbW9NdmNcRGVtb012Y1xIb21lXFNhdmVWYWx1ZQ==?=
X-Powered-By: ASP.NET
Date: Wed, 19 Oct 2016 23:51:29 GMT
Content-Length: 1
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?RDpcRGV2ZWxvcG1lbnRBcmNoaXZlXERlbW9NdmNcRGVtb012Y1xIb21lXFNhdmVWYWx1ZTI=?=
X-Powered-By: ASP.NET
Date: Wed, 19 Oct 2016 23:51:51 GMT
Content-Length: 1
答案 1 :(得分:0)
以下摘录摘自本文档。
Controllers, Actions, and Action Results
现在,虽然文档的目标是dot net core,但原则是可转移的
操作可以返回任何内容,但经常会返回一个实例 产生的
IActionResult
(或Task<IActionResult>
用于异步方法) 一个回应。动作方法负责选择什么样的 响应;行动结果做出了回应。...
除了上述方法之外,动作还可以简单地返回一个对象。在这种情况下,将根据客户端的请求格式化对象。
在这种情况下,它并不重要,因为框架应根据请求处理结果。
通常的做法是将返回类型作为抽象ActionResult
。如果愿意,您可以轻松返回具体实现。