在 Program.cs 中,我呼叫 AddRazorPages 來設定 Fluent Validation 和一些本地化內容。不幸的是,這有很多重復代碼,我想知道通過兩次呼叫 AddRazorPages 來減少它是否完全合法?
我嘗試運行代碼,它似乎可以作業,但是任何人都可以確認新版本與舊版本實際上相同嗎?
當前程式.cs
if (isDevelopment)
// Run-time compilation added during development
builder.Services.AddRazorPages(options => options.Conventions.Add(new CultureTemplatePageRouteModelConvention()))
.AddFluentValidation(fv =>
{
fv.RegisterValidatorsFromAssemblyContaining<PersonValidator>();
fv.LocalizationEnabled = true;
fv.DisableDataAnnotationsValidation = false;
})
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization()
.AddRazorRuntimeCompilation();
else
// No Run-time compilation needed when deployed
builder.Services.AddRazorPages(options => options.Conventions.Add(new CultureTemplatePageRouteModelConvention()))
.AddFluentValidation(fv =>
{
fv.RegisterValidatorsFromAssemblyContaining<PersonValidator>();
fv.LocalizationEnabled = true;
fv.DisableDataAnnotationsValidation = false;
})
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
新程式.cs
builder.Services.AddRazorPages(options => options.Conventions.Add(new CultureTemplatePageRouteModelConvention()))
.AddFluentValidation(fv =>
{
fv.RegisterValidatorsFromAssemblyContaining<PersonValidator>();
fv.LocalizationEnabled = true;
fv.DisableDataAnnotationsValidation = false;
})
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();
// Run-time compilation added during development
if (isDevelopment)
builder.Services.AddRazorPages().AddRazorRuntimeCompilation();
uj5u.com熱心網友回復:
您可以AddRazorPages根據需要多次呼叫。在內部,它使用一系列TryAdd*呼叫來添加該方法負責注冊的各種服務。如果服務已經在服務容器中注冊,則不會發生任何事情。
https://github.com/dotnet/aspnetcore/blob/207f2c39ee1eccbc339450570fe6297026ea549c/src/Mvc/Mvc.RazorPages/src/DependencyInjection/MvcRazorPagesMvcCoreBuilderExtensions.cs#L95
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/465591.html
標籤:asp.net 核心 剃刀页面 .net-6.0 服务集合
