首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp网核2中的DataAnnotations定位

asp网核2中的DataAnnotations定位
EN

Stack Overflow用户
提问于 2018-06-20 19:03:39
回答 1查看 11.1K关注 0票数 6

我正在尝试实现这个:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-2.1#dataannotations-localization

我的代码:

Startup.cs

代码语言:javascript
复制
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

代码语言:javascript
复制
namespace MyProj.Classes
{
    /// <summary>
    /// Dummy class to group shared resources
    /// </summary>
    public class SharedResource
    {

    }
}

FooViewModel.cs

代码语言:javascript
复制
public class FooViewModel
{
    [Required(ErrorMessage = "EmailRequired")]
    [EmailAddress(ErrorMessage = "EmailIsNotValid")]
    [Display(Name = "Email")]
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }
}

FooPage.cshtml

代码语言:javascript
复制
...
<input asp-for="Email" class="form-control">
<div class="invalid-feedback" style="display:block;">
    <span asp-validation-for="Email"></span>
</div>
...

我有资源文件Resources\SharedResource.resx

电子邮件电子邮件

EmailIsNotValid电子邮件字段不是有效的电子邮件地址。

EmailRequired电子邮件字段是必需的。

不工作,编译或运行时没有错误。而不是翻译,它显示了'EmailIsNotValid‘或'EmailRequired’。会出什么问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-20 20:01:46

重复的Localization of RequiredAttribute in ASP.NET Core 2.0,但没有标记的答案,它隐藏在评论中。

虚拟SharedResource类应该与web应用程序(startup.cs)位于同一个名称空间中。在我的例子中,我删除了“. case”。医生不清楚。

update:对于我的虚拟类,同样的文件名规则适用于docs:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-2.1#resource-file-naming

资源是根据其类的完整类型名称(减去程序集名称)命名的。例如,一个项目中的法语资源,其主程序集为LocalizationWebsite.Web.dll,用于LocalizationWebsite.Web.Startup类,将被命名为Startup.fr.resx。类LocalizationWebsite.Web.Controllers.HomeController的资源将被命名为Controllers.HomeController.fr.resx。如果目标类的命名空间与程序集名称不相同,则需要完整的类型名称。例如,在示例项目中,类型ExtraNamespace.Tools的资源将命名为ExtraNamespace.Tools.fr.resx。

另一种解决方法是将资源文件命名为“Classes.SharedResource.resx”,或者将其放在文件夹资源\类中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50955338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档