我应该使用AddMvc或addmvcore为ASP.. NET Core MVC开发
本文关键字:NET ASP Core MVC 开发 addmvcore AddMvc 我应该 | 更新日期: 2023-09-27 18:13:30
我正在学习ASP。. NET Core MVC,问题的代码片段如下:
// CHAPTER 4 - ESSENTIAL C# FEATURES
namespace LanguageFeatures {
public class Startup {
public void ConfigureServices(IServiceCollection services) {
services.AddMvc();
}
// etc.
因为这本书是关于ASP的。. NET Core MVC,而不是ASP。. NET MVC,我认为我必须使用AddMvcCore()
而不是AddMvc()
,如下所示:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore(); // as opposed to:
//services.AddMvc();
}
我在这里做的是正确的吗?
查看ASP上的MvcServiceCollectionExtensions.cs
类。. NET Core GitHub repo:
public static IMvcBuilder AddMvc(this IServiceCollection services)
{
if (services == null)
{
throw new ArgumentNullException(nameof(services));
}
var builder = services.AddMvcCore();
builder.AddApiExplorer();
builder.AddAuthorization();
AddDefaultFrameworkParts(builder.PartManager);
// Order added affects options setup order
// Default framework order
builder.AddFormatterMappings();
builder.AddViews();
builder.AddRazorViewEngine();
builder.AddRazorPages();
builder.AddCacheTagHelper();
// +1 order
builder.AddDataAnnotations(); // +1 order
builder.AddCors();
return new MvcBuilder(builder.Services, builder.PartManager);
}
AddMvcCore()
和AddMvc()
都返回一个IMvcBuilder
,可以用来进一步配置MVC服务。
AddMvcCore()
,顾名思义,只添加MVC管道的核心组件,需要您自己添加任何其他中间件(项目所需)。
AddMvc()
内部调用AddMvcCore()
,并添加其他中间件,如Razor视图引擎、Razor页面、CORS等。
现在,我会按照你的教程建议,坚持使用AddMvc()
。
As of ASP。在asp.net Core 3.0中,有一些额外的方法可以细粒度地控制MVC管道的哪些部分对你的应用程序可用,例如:
-
services.AddControllers()
-
services.AddControllersWithViews()
有关它们的作用和何时使用它们的更多信息,请参阅本文和MSDN。