我正在创建我的第一个asp.net核心应用程序,我正在尝试创建modelstate localizaed验证消息。
到目前为止已经完成了。在我的Startup课程中,我有以下内容:
public void ConfigureServices(IServiceCollection services)
{
//Omitted code because is not relevant to curent problem
var mvc = services.AddMvc(config => {
config.Filters.Add(new ExceptionHandler(env));
config.Filters.Add(new LanguageActionFilter());
});
mvc.AddViewLocalization();
mvc.AddDataAnnotationsLocalization();
}
public void Configure(IApplicationBuilder app)
{
//Omitted code because is not relevant to curent problem
UseLocalization(app);
UseMvcConfig(app);
}
private void UseLocalization(IApplicationBuilder app)
{
var defaultCulture = new RequestCulture(new CultureInfo("ro-RO"));
var requestLocalizationOptions = new RequestLocalizationOptions
{
SupportedCultures = new List<CultureInfo>
{
new CultureInfo("en-US"),
new CultureInfo("ro-RO")
},
SupportedUICultures = new List<CultureInfo>
{
new CultureInfo("en-US"),
new CultureInfo("ro-RO")
}
};
app.UseRequestLocalization(requestLocalizationOptions, defaultCulture);
}
private void UseMvcConfig(IApplicationBuilder app)
{
app.UseMvc(config =>
{
config.MapRoute(
name: "Default",
template: "api/{controller}/{action}/{id?}");
});
}
我正在调用以下控制器:
[AllowAnonymous]
public class AccountController : Controller
{
private readonly IMapperService mapperService;
private readonly IAuthenticationManager autheticationManager;
private readonly IUserManager userManager;
public AccountController(IUserManager userManager, IAuthenticationManager autheticationManager, IMapperService mapperService)
{
this.userManager = userManager;
this.mapperService = mapperService;
this.autheticationManager = autheticationManager;
}
[HttpPost]
[ModelStateValidation]
public async Task<IActionResult> Register([FromBody]UserRegistrationViewModel userViewModel)
{
UserDTO userDTO = mapperService.Map<UserRegistrationViewModel, UserDTO>(userViewModel);
IdentityResult registrationResult = await userManager.RegisterAsync(userDTO, Request.Host.Value);
if (!registrationResult.Succeeded) {
return HttpBadRequest();
}
return Ok();
}
}
}
我的UserRegistrationViewModel看起来像这样:
[Mapper(MapTo = typeof(UserDTO))]
public class UserRegistrationViewModel
{
[Required(ErrorMessageResourceName = "Account_Register_EmailAddress", ErrorMessageResourceType = typeof(Resource))]
public string UserName { get; set; }
[Required(ErrorMessageResourceName = "Account_Register_Password", ErrorMessageResourceType = typeof(Resource))]
public string Password { get; set; }
[Required(ErrorMessageResourceName = "Account_Register_Password_Confirmation", ErrorMessageResourceType = typeof(Resource))]
[Compare("Password", ErrorMessageResourceName = "Account_Register_Password_Compared", ErrorMessageResourceType = typeof(Resource))]
public string ConfirmPassword { get; set; }
}
我还创建了两个资源文件。一个叫做Resource.resx,另一个叫Resource.ro-RO.resx。
现在当从客户端执行ajax调用时,我将设置以下内容 aditional header:
'Accept-Language': 'ro-RO'
我的问题是,不是从Resource.ro-RO.resx返回数据,而是返回Resource.resx中的数据。
我还检查了当前的CultureInfo.CurrentCulture和CultureInfo.CurrentUICulture是什么,它们都被设置为&#39; ro-RO&#39;。
我错过了什么?