Visual Studio 2015: MVC 6脚手架切换到使用IActionResult代替ActionResult

本文关键字:IActionResult ActionResult 代替 2015 Studio MVC 脚手架 Visual | 更新日期: 2023-09-27 18:05:44

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

在VS 2013中,MVC 5 Auto-Scaffolding总是使用:ActionResult

在VS 2015中MVC 6自动脚手架切换到使用:IActionResult

在VS 2015中,我注意到微软团队不喜欢再这样做了:

 public class Test{
     private int i;
     public Test (int i){
         this.i = i;
     }
 }

而在所有生成的类中,我看到它们都是这样的:

 public class Test{
     private int _i;
     public Test (int i){
         _i = i;
     }
 }

如果这只是编码风格的问题,那很好,我会立即失去知道他们为什么改变这个的兴趣,但如果这背后有任何合乎逻辑的解释,我迫不及待地想知道那是什么。

Visual Studio 2015: MVC 6脚手架切换到使用IActionResult代替ActionResult

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

但是在ASP。. NET 5 . MVC 6,他们已经合并在一个单一的web应用程序。所以现在只有一个控制器类microsoft . asp.net . MVC . controller类作为他们两个的基础。为了区分它们,当作为MVC控制器使用时,IActionResult可能是一个视图。当用作Web API控制器时,IActionResult可能是数据(JSON/XML)。同一个控制器可以有同时返回视图和数据的操作