c# - 在 .NET Core 5 ViewModel 中本地化没有名称属性的显示 DataAnnotation
问题描述
我有
[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 中做到这一点。链接在这里:
现在,如何在 .NET Core 5 中执行此操作?我无法使用IValidationAttributeAdapterProvider
注入“显示”。[我得到了所有的“验证”属性,但没有显示]
解决方案
你可以这样写一个属性
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; }
}
推荐阅读
- java - 有没有一种方法可以直接将 XML 转换为 JSON 并删除命名空间,而无需任何中间 XML 到 XML 的转换?
- hadoop - apache pig latin 中的字数统计程序
- java - SpringBoot不同的连接池到同一个数据库
- python - 将数据直接下载到谷歌云存储
- powerbi - Power BI 测验 - 需要澄清一个问题
- svg - 如何使用 viewBox 在 Inkscape 中保存 SVG?
- php - 处理后重定向回调 URL
- ios - 如何在我的 UICollectionView 单元格中删除具有透明背景的底部边框线?
- c# - 更改数据中继器中按钮的行为
- javascript - 有线承诺嵌套 .then 处理程序顺序