Аннотация данных DisplayFormat с использованием строки ресурса - PullRequest
2 голосов
/ 21 февраля 2012

Я бы хотел отформатировать данные моей модели, используя аннотацию данных DisplayFormat, но я хочу использовать строку формата, хранящуюся в файле ресурсов. Мне удалось передать тип и имя ресурса для некоторых аннотаций данных, например, при указании сообщений об ошибках. Как мне сообщить DisplayFormat, чтобы получить строку формата из одного из моих файлов ресурсов?

1 Ответ

8 голосов
/ 22 февраля 2012

Стандартный атрибут DisplayFormat не позволяет вам сделать это. Вы можете написать собственный атрибут для достижения этой функциональности:

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class LocalizedDisplayFormatAttribute : Attribute, IMetadataAware
{
    public string DataFormatStringResourceName { get; set; }
    public bool ApplyFormatInEditMode { get; set; }

    public void OnMetadataCreated(ModelMetadata metadata)
    {
        if (!string.IsNullOrEmpty(DataFormatStringResourceName))
        {
            if (ApplyFormatInEditMode)
            {
                metadata.EditFormatString = MyMessages.ResourceManager.GetString(DataFormatStringResourceName);
            }
            metadata.DisplayFormatString = MyMessages.ResourceManager.GetString(DataFormatStringResourceName);
        }
    }
}

и затем:

public class MyViewModel
{   
    [LocalizedDisplayFormat(DataFormatStringResourceName = "DobFormat", ApplyFormatInEditMode = true)]
    public DateTime Dob { get; set; }
}

и внутри MyResources.resx может быть строковое значение DobFormat: {0:dd-MM-yyyy}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...