Startup.cs
public void ConfigureServices(IServiceCollection services)
{
...
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
factory.Create(typeof(SharedResource));
});
...
}
SharedResource.cs
namespace MyProj.Classes
{
/// <summary>
/// Dummy class to group shared resources
/// </summary>
public class SharedResource
{
}
}
FooViewModel.cs
public class FooViewModel
{
[Required(ErrorMessage = "EmailRequired")]
[EmailAddress(ErrorMessage = "EmailIsNotValid")]
[Display(Name = "Email")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
}
FooPage.cshtml
...
<input asp-for="Email" class="form-control">
<div class="invalid-feedback" style="display:block;">
<span asp-validation-for="Email"></span>
</div>
...
我有一个资源文件Resources\SharedResource.resx。
Email 邮箱
EmailIsNotValid 电子邮件字段不是有效的电子邮件地址。
EmailRequired 电子邮件字段是必需的。
代码没有问题,编译和运行时都没有报错,但是它没有翻译,而是显示'EmailIsNotValid'或'EmailRequired'。可能出了什么问题?
ErrorMessageResourceName
和ErrorMessageResourceType
属性,而不是ErrorMessage
。 - Camilo Terevinto