mvc:我想从资源文件加载我的错误消息,但我得到属性const错误

时间:2014-06-12 05:39:58

标签: asp.net-mvc resx

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

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

1 个答案:

答案 0 :(得分:2)

Attribute parameters are restricted to constant values

也就是说,当将属性应用于某个东西时,参数必须是常量值,例如const primitives(string,int,float,bool,double等),枚举或类型。

例如:

法律

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

错误

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

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

提示

ValidationAttribute课程已经解决了这个问题。您可以提供ErrorMessageErrorMessageResourceType,而不是提供ErrorMessageResourceName参数。然后使用这些const值来查找文化的相应错误消息。

e.g。

法律

[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