Я хотел бы использовать DataAnnotations в своем приложении MVC ASP.NET. Я имею класс ресурсов со строгим контролем типов и хотел бы определить, по моему мнению, модели:
[DisplayName(CTRes.UserName)]
string Username;
CTRes
мой ресурс, автоматически сгенерированный класс. Выше определения не позволяется. Есть ли какие-либо другие решения?
В .NET 4.0 добавлен атрибут DisplayAttribute , который позволяет указать строку ресурса:
[Display(Name = "UsernameField")]
string Username;
Если можно пока не используете .NET 4.0, вы можете написать свой собственный атрибут:
public class DisplayAttribute : DisplayNameAttribute
{
public DisplayAttribute(Type resourceManagerProvider, string resourceKey)
: base(LookupResource(resourceManagerProvider, resourceKey))
{
}
private static string LookupResource(Type resourceManagerProvider, string resourceKey)
{
var properties = resourceManagerProvider.GetProperties(
BindingFlags.Static | BindingFlags.NonPublic);
foreach (var staticProperty in properties)
{
if (staticProperty.PropertyType == typeof(ResourceManager))
{
var resourceManager = (ResourceManager)staticProperty
.GetValue(null, null);
return resourceManager.GetString(resourceKey);
}
}
return resourceKey;
}
}
, который можно было бы использовать следующим образом:
[Display(typeof(Resources.Resource), "UsernameField"),
string Username { get; set; }