2010-02-19 2 views
3

У меня есть веб-приложение MVC, который использует пользовательскую папку & пространство имен для файлов ресурсов. Мне нужно иметь возможность вытаскивать поздние значения из моего файла ресурсов, то есть использовать тип ресурса и строку. Я попытался использовать:Получить значение ресурса * без * с помощью GetGlobalResourceObject

HttpContext.GetGlobalResourceObject("ResourceClass", "SomeKey") 

Но это возвращает null. Когда я переношу ресурс в App_GlobalResources, это работает, но каскадирует в другие проблемы. Я пробовал работать с ними, но они кажутся более глубокими и более значительными, чем возврат к моему первоначальному плану, заключающемуся в том, что вы можете читать из файла ресурсов в пользовательской папке.

В двух словах, я пытаюсь локализовать свою проверку xVal, как сообщение об ошибке, и в случае RegEx валидатор, шаблон. У меня все работает, кроме одной части, где я пытаюсь локализовать шаблон. Так как это не встроено в DataAnnotations.RegularExpressionAttribute, мне нужно получить его самостоятельно, исходя из типа ресурса и имени, указанного в атрибуте. Отсюда моя дилемма.

Могу ли я получить к стоимости ресурсов с использованием какой-либо другой метод? Или, должен ли мой файл ресурсов находиться в папке App_GlobalResources? Если последнее, тогда мне нужно будет открыть другое обсуждение для всех моих других вопросов - или реализовать некоторую более грубую форму локализации для материала регулярных выражений.

Заранее спасибо.

Jerad

ответ

4

Это решение, которое мы придумали:

public static class ResourceHelper 
{ 
    public static string GetString(Type resourceType, string resourceName) 
    { 
     return new ResourceManager(resourceType.FullName, resourceType.Assembly) 
      .GetString(resourceName); 
    } 

    public static string GetString(Type resourceType, string resourceName, CultureInfo culture) 
    { 
     return new ResourceManager(resourceType.FullName, resourceType.Assembly) 
      .GetString(resourceName, culture); 
    } 

    public static object GetObject(Type resourceType, string resourceName) 
    { 
     return new ResourceManager(resourceType.FullName, resourceType.Assembly) 
      .GetObject(resourceName); 
    } 

    public static object GetObject(Type resourceType, string resourceName, CultureInfo culture) 
    { 
     return new ResourceManager(resourceType.FullName, resourceType.Assembly) 
      .GetObject(resourceName, culture); 
    } 
} 
Смежные вопросы