Как использовать пользовательский поставщик ресурсов с атрибутами? - PullRequest
1 голос
/ 11 мая 2011

Как я могу использовать свой собственный метод для извлечения строковых ресурсов и использования в свойствах?Например:

public class Friend
{
    [Required(ErrorMessage = "Invalid Name")]
    [Display(Name = "Friend's name")]
    public string Name { get; set; }
}

Поставщик ресурсов по умолчанию (если я установил ResourceType / ErrorMessageResourceType) будет искать класс с открытым свойством, но мои файлы ресурсов не имеют сгенерированного класса,они представляют собой простой XML.

У меня есть метод ResourceHelper.Get(key), который возвращает ожидаемое мной значение.Как я могу изменить его, чтобы использовать мой способ получения ресурсов?

1 Ответ

2 голосов
/ 11 мая 2011

Вот несколько разных способов попробовать в вашем случае. Четвертый подход звучит многообещающе.

http://carrarini.blogspot.com/2010/08/localize-aspnet-mvc-2-dataannotations.html

Approaches to solve the problem:
  • Написание собственного провайдера сборки, который собирает ресурсы из База данных.
  • Создание динамического объекта, который преобразовывает имя свойства в ключ для менеджера ресурсов.
  • Расширение атрибутов данных Аннотации.
  • Использование шаблона T4 для генерации класс, содержащий ресурсы.

[EDIT}

  • На ваш вопрос относительно Dynamic Объект

Для этого вам нужно будет динамически создавать объекты друзей. Это означает наследование Friend от класса DynamicObject и реализацию TryGetMember () и TrySetMember (). Эти свойства внутренне работают с объектами ресурса "HttpContext.GetLocalResourceObject" и позволяют создавать динамический класс Friend с локализованными свойствами. После этого вам нужно реализовать собственный ModelBinder, чтобы использовать обтекание вокруг него.

Этот парень нашел лучший способ обойти это: - MVC3 ModelBinder для DynamicObject

...