У меня есть локализованное приложение, и я задаюсь вопросом, возможно ли иметь DisplayName
для определенного образцового набора свойств от Ресурса.
Я хотел бы сделать что-то вроде этого:
public class MyModel {
[Required]
[DisplayName(Resources.Resources.labelForName)]
public string name{ get; set; }
}
Но я не могу к нему, как говорится в компиляторе: "Аргументом атрибута должно быть константное выражение, typeof выражение или выражение создания массива типа параметра атрибута" :(
Есть ли какие-либо обходные решения? Я произвожу маркировки вручную, но мне нужны они для вывода блока проверки допустимости!
Как насчет написания настраиваемого атрибута:
public class LocalizedDisplayNameAttribute: DisplayNameAttribute
{
public LocalizedDisplayNameAttribute(string resourceId)
: base(GetMessageFromResource(resourceId))
{ }
private static string GetMessageFromResource(string resourceId)
{
// TODO: Return the string from the resource file
}
}
, который можно было бы использовать следующим образом:
public class MyModel
{
[Required]
[LocalizedDisplayName("labelForName")]
public string Name { get; set; }
}