应该在MVC控制器中的动作方法,而不是WEBAPI,只返回ActionResult

本文关键字:WEBAPI ActionResult 返回 方法 MVC 控制器 | 更新日期: 2023-09-27 18:14:06

关于控制器的动作方法的返回类型的最佳实践是什么?

我有一个操作方法来保存数据并返回生成的ID。返回ActionResult和返回int有什么区别和好处?

public ActionResult SaveValue(Payment model) {
     // Save stuff
     return this.Json(id);
}

/

public int SaveValue(Payment model) {
     // Save stuff
     return id;
}

如果我要返回一个对象,比如Payment模型,我将以json形式返回它,并让json()方法正确地转换它。然而,对于简单的值,返回类型本身而不是ActionResult是正确的吗?

应该在MVC控制器中的动作方法,而不是WEBAPI,只返回ActionResult

在您的场景中,它们本质上是相同的—都返回一个数字。

然而,值得注意的是,响应头中的Content-Type是不同的。

(Json)

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
后来

(int)

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

以下节选自本文档。

控制器、动作和动作结果

现在,虽然文档是针对点网核心的原则是可转让的

Actions可以返回任何值,但通常返回的是IActionResult(或Task<IActionResult>为异步方法),产生一个响应。行动方法负责选择什么样的行动方法反应;操作结果执行响应。

除了上面的方法,一个动作也可以简单地返回一个对象。在这种情况下,对象将根据客户端的请求进行格式化。

在这种情况下,这并不重要,因为框架应该根据请求处理结果。

通常的做法是将返回类型作为抽象ActionResult。如果愿意,您也可以很容易地返回具体实现。