resourceProviderFactoryType игнорируется в файле web.config - PullRequest
4 голосов
/ 04 марта 2012

Я пытался установить пользовательский resourceProviderFactory в файле web.config, но он всегда игнорируется, мой файл web.config выглядит следующим образом

<globalization culture="auto" resourceProviderFactoryType="MyProject.CustomResourceFactory, MyProject"></globalization>

Мой класс CustomResourceFactory никогда не запускается, устанавливаяточка останова в конструкторе никогда не достигается.

Неправильное написание имени класса в разделе глобализации не вызывает никаких исключений, это нормально?

Я пробовал это в более чем одном проекте (подумавчто проект, над которым я работаю, неверно сконфигурирован или что-то в этом роде), но результаты те же.

Я использую C # asp.net MVC3,

Кто-нибудь знает, почему это происходит, иЕсть ли способ изменить ResourceProviderFactory во время выполнения?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 15 декабря 2012

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

http://publicityson.blogspot.ca/2010/11/aspnet-mvc-razor-view-engine-and.html

Он создал помощников для вызова своих пользовательских ресурсов как требование к бритве для вызоваViewContext.HttpContext.GetGlobalResourceObject(classKey, resourceKey) в представлении действительно долго, что привело к чему-то вроде:

public static class CommonHtmlExtensions
{
    public static object GetGlobalResource(this HtmlHelper htmlHelper, string classKey, string resourceKey)
    {
        return htmlHelper.ViewContext.HttpContext.GetGlobalResourceObject(classKey, resourceKey);
    }
    //several other methods.
}

Позволяет ему использовать @Html.GetGlobalResource("CommonText", "Some_ResourceKey") в виде бритвы.

Также очень полезно, чтобы держать вещи сильнотипизированная и используемая в аннотациях данных, приведенная ниже ссылка показывает, как использовать шаблоны T4 для создания констант для каждого элемента ресурса в вашей базе данных.http://carrarini.blogspot.ca/2010/08/localize-aspnet-mvc-2-dataannotations.html

0 голосов
/ 22 марта 2012

Делая некоторые размышления о бритвенных видах в mvc3, я не видел никаких доказательств использования этого resourceProviderFactory, и именно поэтому ваш пользовательский поставщик ресурсов не затрагивается, я думаю, что эта функция не предназначена для использования в MVC и доступна только для Веб-формы,

Использование ресурсов в MVC должно быть просто путем указания на ваш сгенерированный Resx класс, например:

    @
    {
       var resources = MyResources.ResourceClass;
    }

<p>@resources.MyTitle</p>

и если вы хотите использовать пользовательский класс, который загружает ваши ресурсы, вы можете просто указать переменную resources выше на другой класс,

но вот еще один способ, который, я думаю, мог бы этого достичь.

вы можете изменить pageBaseType в файле web.config в папке Views на свой собственный класс, который наследуется от WebViewPage

В этом классе вы можете создать свойство, которое будет возвращать экземпляр пользовательского класса, который загружает ваши ресурсы.

Сделав это, вы сможете впоследствии получить доступ к этому свойству в любом представлении в папке Views.

делай все, что подходит твоей ситуации. и если есть лучший способ, пожалуйста, поделитесь им.

...