【问题标题】:DisplayAttribute ResourceType Can't Found ResourceDisplayAttribute ResourceType 找不到资源
【发布时间】:2021-05-02 21:46:18
【问题描述】:

我想使用资源以不同的语言显示名称。 下面的代码有错误:

public class ChangePassword
{
    [Display(Name = "CurrentPassword", ResourceType = typeof(SheardLocalization))]
    public string CurrentPassword { get; set; }
    [Display(Name = "NewPassword", ResourceType = typeof(SheardLocalization))]
    public string NewPassword { get; set; }
}

InvalidOperationException:无法检索属性“名称”,因为本地化失败。类型“CyengTeam.App.Models.SheardLocalization”不是公共的或不包含名为“CurrentPassword”的公共静态字符串属性。

在视图(.cshtml)中,我可以使用@inject IHtmlLocalizer<SheardLocalization> localization; 获取资源并且没有任何问题。但是在课堂上有错误。

【问题讨论】:

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


    【解决方案1】:

    你可以使用

    [Required (ErrorMessageResourceName="SomeText", ErrorMessageResourceType=typeof(Resources.Resource))]
    

    问题出现在 System.ComponentModel.DataAnnotations 属性中。 DisplayAttribute 检查 Type.IsVisible 属性,而 ValidationAttribute(RequiredAttribute 从它们继承) 不会。因此,您需要将您的资源类和属性更改为 public 以使其工作。 你可以阅读更多Here

    【讨论】:

    • 我公开了资源访问修饰符。并添加了必需的属性。但问题没有解决
    • @alirezasejdei 你试过用 ErrorMessageResourceName 代替 Name 吗?
    • @alirezasejdei 如果您使用必填属性,则不应再使用 [Display(Name)] 属性
    猜你喜欢
    • 2017-01-11
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2013-01-03
    相关资源
    最近更新 更多