Visual Studio 2015:MVC 6 Scaffolding切换到使用ActionResult的IActionResult内部

Arr*_*rrr 5 c# asp.net-mvc asp.net-core-mvc visual-studio-2015

我刚刚安装了VS 2015,我注意到MVC6的自动脚手架有一些变化.我很好奇为什么微软会做出这些改变,因为我认为如果他们决定做一些改变,可能会有一些我可能不知道的好处.

在VS 2013中,MVC 5 Auto-Scaffolding始终使用:ActionResult

在VS 2015中,MVC 6 Auto-Scaffolding切换到使用:IActionResult

在VS 2015中,我注意到Microsoft团队不再这样做了:

 public class Test{
     private int i;
     public Test (int i){
         this.i = i;
     }
 }
Run Code Online (Sandbox Code Playgroud)

在所有生成的类中,我看到他们做了:

 public class Test{
     private int _i;
     public Test (int i){
         _i = i;
     }
 }
Run Code Online (Sandbox Code Playgroud)

如果它只是编码风格的问题,那很好,我会立即失去我的兴趣知道为什么他们改变了这一点,但如果有任何合理的解释背后,我迫不及待想知道那是什么.

Awa*_*ood 3

就您的 ActionResult 问题而言,在以前的 ASP.NET 中,MVC 控制器使用 System.Web.MVC.Controller 父类,Web API 控制器使用 System.Web.Http.ApiController 父类。

但在 ASP.NET 5 MVC 6 中,它们已将两者合并到一个 Web 应用程序中。所以现在只有 1 个控制器类 Microsoft.AspNet.Mvc.Controller 类作为它们的基础。现在为了区分它们,当用作 MVC 控制器时,IActionResult 可能是一个视图。当用作 Web API 控制器时,IActionResult 可能是数据 (JSON/XML)。同一控制器可能具有返回视图和数据的操作。