我正尝试从以下方式更改我的DTO:
[Required]
[Display(Name = "Name")]
[MaxLength(100, ErrorMessage = "error msg")]
[DisplayFormat(ConvertEmptyStringToNull = false)]
public string Name { get; set; }
使用资源进行类似操作:
[Required]
[Display(Name = ResourcesKeys.Name, ResourceType = typeof(res))]
[MaxLength(100, ErrorMessageResourceName = ResourcesKeys.NameFieldTooLongErrorMsg, ErrorMessageResourceType = typeof(res))]
[DisplayFormat(ConvertEmptyStringToNull = false)]
public string Name { get; set; }
其中 res 是我的资源文件。该应用程序将包含许多资源文件。暂时可以正常工作,但是我想知道是否有其他方法可以通过其他方法发送资源类型来达到相同的结果。
我想上课:
public static class ResourcesKeys
{
public const string Name = "name";
public const string NameFieldTooLongErrorMsg = "nameFieldTooLongErrorMsg";
public static Type ReturnResourceType()
{
return typeof(res);
}
}
这将帮助我实现:
[MaxLength(100, ErrorMessageResourceName = ResourcesKeys.NameFieldTooLongErrorMsg, ErrorMessageResourceType = ResourceKeys.ReturnResoureType())]
现在,当我尝试执行此操作时,用下划线标记该行,并且错误显示:
属性参数必须是常量表达式,typeof表达式 或属性参数类型的数组创建表达式。
我明白了,你不能这样做。我尝试将其更改为
[MaxLength(100, ErrorMessageResourceName = ResourcesKeys.NameFieldTooLongErrorMsg, ErrorMessageResourceType = typeof(ResourceKeys.ReturnResoureType()))]
这一次的味精如下:
类型名称ReturnResourceType在类型中不存在 资源密钥。
这是完全可以理解的。 ReturnResourceType()不是类型,而是方法。我知道了。 我不明白的是,有什么办法可以使它像这样工作吗?