AddMvc 和 AddMvcCore 的区别
目錄
本文出自《從零開始學 ASP.NET CORE MVC》目錄?
視頻課程效果更佳:從零開始學 Asp.Net Core MVC?
ASP.NET Core 為什么有 AddMvc 和 AddMvcCore 他們是什么關系?
在本視頻中,我們將討論 AddMvc()和 AddMvcCore()方法之間的區別。
要在 ASP.NET Core 應用程序中設置 MVC,我們在 Startup 類的 ConfigureServices()方法中調用 IServiceCollection 接口的 AddMvc()方法。
services.AddMvc();除了 AddMvc()方法,我們在 IServiceCollection 接口上也有 AddMvcCore()方法。 因此,我們想到的一個顯而易見的問題是,這兩種方法之間的區別是什么。
AddMvc() v/s AddMvcCore()
在我們討論 AddMvc()和 AddMvcCore()方法之間的區別之前,讓我們修改以下 HomeController 以返回 JSON 格式的數據,而不是簡單的字符串。
目前,沒有為 HomeController 類指定基類。 它現在還可以為我們從 Index()動作方法返回一個簡單的字符串。
public class HomeController{
public string Index()
{
return "Hello from MVC";
}
}
但是,如果我們想要從 Index()操作方法返回 HTML 視圖或 JSON 數據,則我們的 HomeController 類必須繼承框架提供的 Controller 類。 Controller 基類提供了返回不同結果的支持,如 JsonResult,ViewResult,PartialViewResult 等。 修改 HomeController 類以從 Controller 類派生并從 Index()方法返回 JsonResult,如下所示。
public class HomeController : Controller{
public JsonResult Index()
{
return Json(new { id=1, name="pragim" });
}
}
請注意:Controller 類存在于 Microsoft.AspNetCore.Mvc 命名空間中。
此時,運行應用程序,我們應該按預期在瀏覽器中看到 JSON 數據。
現在,在 ConfigureServices()方法中調用 AddMvcCore()方法而不是 AddMvc()并運行應用程序。
public void ConfigureServices(IServiceCollection services){
services.AddMvcCore();
}
我們收到以下錯誤
沒有為“Microsoft.AspNetCore.Mvc.Formatters.Json.Internal.JsonResultExecutor”類型的服務注冊
為了能夠返回 JSON 數據,需要在依賴注入容器中注冊 JsonFormatterServices。AddMvc()方法執行此操作,但不執行 AddMvcCore()方法。您可以通過查看 ASP.NET Core MVC Github 頁面上的源代碼來確認這一點。
https://github.com/aspnet/Mvc/blob/release/2.2/src/Microsoft.AspNetCore.Mvc/MvcServiceCollectionExtensions.cs
顧名思義,AddMvcCore()方法只添加核心 MVC 服務。另一方面,AddMvc()方法添加了所有必需的 MVC 服務。AddMvc()方法在內部調用 AddMvcCore()方法,以添加所有核心 MVC 服務。因此,如果我們調用 AddMvc()方法,則無需再次顯式調用 AddMvcCore()方法。
我希望這可以澄清 AddMvc()和 AddMvcCore()方法之間的區別。
原文地址:https://www.52abp.com/wiki/mvc/V0.16/17.AddMvcVsAddMvcCore
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的AddMvc 和 AddMvcCore 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软XAML Studio - WPF,
- 下一篇: 浅谈容量规划