【问题标题】:mvc : I want to load my error message from resource file but i get attribute const error [closed]mvc:我想从资源文件加载我的错误消息,但我得到属性 const 错误 [关闭]
【发布时间】:2014-08-02 08:26:51
【问题描述】:

我想创建一个多语言 mvc 网站,所以我一直在从资源文件加载我的所有消息和标签,在我的验证中,我想显示来自资源文件的消息,但我收到以下错误。

An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type

【问题讨论】:

    标签: asp.net-mvc resx


    【解决方案1】:

    Attribute parameters are restricted to constant values.

    也就是说,当对某事物应用属性时,参数必须是常量值,例如 const 基元(字符串、int、float、bool、double 等)、枚举或类型。

    例如:

    ##法律

    [Required("This field is required.")]
    public string Username { get; set; }
    

    ##错误

    [Required(SomeObject.ErrorMessageStringProperty)]
    public string Username { get; set; }
    

    如果字符串不是const,则无法编译。

    #提示

    ValidationAttribute 类已经解决了这个问题。您可以提供ErrorMessageResourceTypeErrorMessageResourceName,而不是提供ErrorMessage 参数。然后使用这些 const 值来查找适合该区域性的错误消息。

    例如

    ##法律

    [Required(ErrorMessageResourceType = typeof(Resources.Errors), ErrorMessageResourceName="RequiredError")]
    public string Username { get; set; }
    

    ##延伸阅读

    How to localize ASP.NET MVC application?

    Multiple languages in an ASP.NET MVC application?

    DisplayName attribute from Resources?

    Best practice for ASP.NET MVC resource files

    ##ASP.NET 5/核心

    对于将来遇到此帖子并正在寻求 .NET 5 参考的开发人员...以下文档为我清除了一切。

    Globalization and localization in ASP.NET Core

    【讨论】:

    • 但是我的资源文件创建了一个静态字符串,例如 public static string ClaimamountlessthanBalanceamount { get { return ResourceManager.GetString("ClaimamountlessthanBalanceamount", resourceCulture); } }
    • 这是一个静态属性,而不是一个常量。属性值不是属性中的合法参数。
    • 最好的方法是什么
    • 我添加了一个部分来提示您正确的方向。使用该信息和进一步阅读的想法。
    猜你喜欢
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多