確實,在「.NET Core」中將會使用「ApiController
」嗎?我真的需要這方面的專業見解。因爲我打算在新項目中使用它。在.NET Core中是不贊成使用ApiController
回答
因爲MVC和WebAPI已經在ASP.NET Core中合併了,所以確實對於特定的ApiController
類。但是,MVC的Controller
類引入了一些功能,您在開發Web API時可能不需要這些功能,例如視圖和模型綁定。
你有兩個選擇,如果你想要的東西不同:
使用ControllerBase
類的Microsoft.AspNetCore.Mvc.Core包。
或者
創建ApiController
基類。這裏的關鍵是添加[ActionContext]
屬性中注入當前ActionContext
實例到屬性:
[Controller]
public abstract class ApiController
{
[ActionContext]
public ActionContext ActionContext { get; set; }
}
此外,[Controller]
屬性添加到類將其標記爲爲MVC控制器發現的控制器。
在我的「Web API in MVC 6」 blogpost中查看更多詳情。
它真的有幫助... – Viji
這實際上正是WebApi兼容性的'ApiController' Shim Package ,它只是綁定更多的屬性,但它們都基於ControlerContext,它通過屬性https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.WebApiCompatShim/ApiController.cs#L36-L43注入。與更多的兼容性東西(這是完全可選的),如路線註冊https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.WebApiCompatShim/Routing/WebApiCompatShimRouteBuilderExtensions.cs#L13或WebApi2 esque屬性 – Tseng
在ASP.NET核心使用從ASP.NET MVC和ASP.NET WepAPI中已知的術語和概念。但基本上它是一個全新的框架。因此,我們可以簡單地忘記幾個概念或基類。
ASP.NET MVC和ASP.NET WebApi是兩個共存但不同的框架,因此必須使用ApiController
作爲基類來指定控制器作爲WebApi控制器。
在ASP.NET Core中,這根本就不再需要。 Controller
基類可用於從Razor Views或JSON返回HTML的操作(輸出格式化程序XML和其他格式也可以)。你甚至不需要基類Controller
。甚至可以使用「Plain Old C#Object」作爲控制器而不需要繼承。 這是一個演示控制器的概要示例,即使ApiController不在那裏,將數據傳遞到客戶端的結構方法也是類似的。
public class DemoController : Controller
{
public async Task<IActionResult> Action()
{
var model = await _someService.GetPreciousData();
return Ok(model);
}
}
感謝您的洞察 – Viji
正如其他人提到的,ASP.NET Core是一個完全新的webstack,它與舊的ASP.NET MVC webstack不兼容。這明確體現在它的名稱和版本控制中!
ASP.NET Core和ASP.NET Core MVC的版本爲1.0.0,使得這種不兼容性非常明顯。
ASP.NET Core將MVC和WebApi合併成一個剛剛調用的Api。
這裏就是你可能一直在尋找的東西:
如果您從以前的ASP.NET MVC或ASP.NET的WebAPI應用程序遷移,則可能要導入的Microsoft.AspNetCore.Mvc.WebApiCompatShim
包,它提供了一些兼容性類型,使遷移更容易從以前的版本。其中包括ApiController
類以及在新webstack Api中刪除的某些屬性。
但是,請注意,這只是幫助您遷移現有應用程序。當你創建一個新的應用程序時,你不應該使用這個兼容性shim,而只是使用新的東西。
感謝您的遷移提示 – Viji
- 1. 贊成&.NET 3.5中
- 2. clEnqueTask在openCL 2.0中不贊成使用
- 3. 不贊成Typedef
- 4. 不贊成
- 5. 在Startup.cs中生成角色在.NET Core 2.0中不起作用
- 6. C++ 17中不贊成使用std :: result_of的原因是什麼?
- 7. .NET Core 2.0成就
- 8. FusionTables不贊成使用數字表ID
- 9. 使用不贊成的方法
- 10. Flex 4.5中不贊成mx.containers.HDividedBox?
- 11. 「的setText:不贊成使用」警告
- 12. 如何在Asp Net Core RC1 MVC中添加帶有令牌認證的「ApiController」MVC
- 13. 如何在.net core 1.0中使用mvc路由URL合成?
- 14. 如何在.NET Core中使用OpenAL?
- 15. 無法在Dot Net Core中使用System.Management.dll
- 16. 在.NET Core 1.0中使用resx資源
- 17. 在.net Core中引用.net 4.6.1庫
- 18. 這是不贊成使用的編碼方式嗎? ASP.Net MVC
- 19. 在.NET 4.5.2控制檯應用程序中使用.NET Core庫
- 20. 如何使用JSON .NET CORE
- 21. 不能贊成測試
- 22. 不贊成的hibernate getSession().connection()
- 23. .NET Core(ASP MVC)在生成後運行
- 24. 在.NET CORE
- 25. .Net Core是否會生成與標準.Net相同的IL?
- 26. 如何引用.NET Core 1.1 DLL - 不是項目 - 從.NET 4.6.1
- 27. 在WebJob中使用.NET Core 2.0庫定位.NET Framework 4.7
- 28. 如何在ApiController中使用POST
- 29. 在MVC 4異步ApiController中使用Task.Factory.StartNew?
- 30. 使用表示和不贊成使用的標記重置CSS
簡答:是的。不是那麼簡短的答案:Asp.Net MVC和Asp.Net Web API被合併爲一個在asp.net-core中的代碼庫。所以它們都從'Controller'繼承,並且都可以返回'IActionResult'的實現。無論是MVC的「視圖」還是Web API的Json。您可以根據需要配置核心。 https://docs.asp.net/en/latest/intro.html – Nkosi