【问题标题】:Localise Display DataAnnotation without the Name Attribute in .NET Core 5 ViewModel在 .NET Core 5 ViewModel 中本地化不带名称属性的显示 DataAnnotation
【发布时间】:2021-03-12 13:10:46
【问题描述】:

我已经

[Required]
[Display(Name ="Email")]
public string Email { get; set; }

[Required]
[Display (Name = "Password")]
public string Password { get; set; }

在我的视图模型中。我可以将其本地化。此外,与使用资源文件的默认 Microsoft 消息相比,我能够为“必需”消息 [无需手动指定 ResourceType 和 ResourceName] 设置不同的本地化。我是怎么做到的?这是链接:

https://stackoverflow.com/a/41385880/931305

现在,我想删除“显示”的“名称”属性。因为大多数时候显示名称总是与实际的属性名称相同。如果您注意到两者都是“电子邮件”/“密码”。所以它会让代码看起来很干净。

我能够在经典的 ASP.NET MVC 中做到这一点。这是链接:

https://haacked.com/archive/2011/07/14/model-metadata-and-validation-localization-using-conventions.aspx/

现在,如何在 .NET Core 5 中执行此操作?我无法使用IValidationAttributeAdapterProvider 注入“显示”。 [我得到了所有的“验证”属性,但没有显示]

【问题讨论】:

    标签: c# asp.net-core asp.net-core-mvc asp.net-core-5.0


    【解决方案1】:

    最好的标准解决方案是在 ASP.NET Core 应用程序中使用本地化。

    总的来说,本地化您的应用程序的步骤大致如下:

    1. 添加所需的本地化服务
    2. 配置本地化中间件,必要时配置文化 提供者
    3. 将 IStringLocalizer 注入到您的控制器和服务中以 本地化字符串
    4. 将 IViewLocalizer 注入您的视图中以本地化视图中的字符串
    5. 为非默认区域性添加资源文件
    6. 为用户添加文化选择机制

    查看this article 了解详细演练。

    【讨论】:

    • 对不起,我没有问如何本地化。我特别想如何使用没有名称属性的显示
    【解决方案2】:

    你可以这样写一个属性

    public sealed class MyDisplayAttribute : DisplayNameAttribute, IModelAttribute
    {
        private string _name = string.Empty;
    
        public MyDisplayAttribute(string displayName) 
        {
            _name= displayName;
        }
    
        public override string DisplayName => _name;
        public string Name => nameof(MyDisplayAttribute);
    }
    

    用法:

    public class MyModel
    { 
        [MyDisplay("MyString")]
        public string MyString { get; set; }
    }
    

    【讨论】:

    • 这意味着我必须在任何地方使用新的“MyDisplay”而不是通常的“Display”。但是,我正在寻找继续使用相同“显示”的方法。这在 Classic .NET 中是可能的。我无法在 .NET Core 中“注入/覆盖”。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2021-02-02
    • 2015-03-04
    • 1970-01-01
    • 2022-07-21
    • 2021-10-08
    • 1970-01-01
    相关资源
    最近更新 更多