#c# #asp.net-core-mvc
#c# #asp.net-core-mvc
Вопрос:
У меня есть проект, использующий ASP.NET Ядро MVC 2.2.
Для локализации я использовал SharedResource. В представлениях и контроллерах это работает нормально, но не для аннотаций данных в моделях.
Моя модель:
public class MyProfileModel : BaseModel
{
[Required(ErrorMessage = "HomeFirstNameRequired")]
[StringLengthWithErrorMessage(20)]
[Display(Name = "HomeFirstName")]
public string FirstName { get; set; }
}
Мой запуск:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddLocalization();
services.AddMvc()
.AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) => factory.Create(typeof(SharedResources));
})
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture(DefaultCultureInfo),
SupportedCultures = SupportedCultures,
SupportedUICultures = SupportedCultures
});
...
}
Я читал, что значение ErrorMessage может использовать локализацию, но это не работает. Также мне это нужно для отображаемого имени..
У кого-нибудь есть идея?
Комментарии:
1. Вы добавляете
AddDataAnnotationsLocalization
дважды, а именно, во второй раз этого не происходит с фабрикой, которую вы использовали в первый раз. Я никогда не делал этого сам, но вполне возможно и даже вероятно, что второй вызов переопределяет первый.2. По предложению Криса, удалите второе
AddDataAnnotationsLocalization
, если не сработает, убедитесь, что namespace дляSharedResource
являетсяprojectnamespace
безResources
. Вот рабочая демонстрация .3. О, я слишком долго кодировал, я этого не видел, и да, я удалил второй, и это решило мою проблему! Спасибо!