Как создать менеджер ресурсов в ASP.NET

Я хотел бы создать менеджер ресурсов на своей странице и использовать некоторые данные, хранящиеся в моих файлах ресурсов. (default.aspx.resx и default.aspx.en.resx)

Код выглядит следующим образом:

System.Resources.ResourceManager myResourceManager = System.Resources.ResourceManager.CreateFileBasedResourceManager("resource", 
               Server.MapPath("App_LocalResources") + Path.DirectorySeparatorChar, null);

    if (User.Identity.IsAuthenticated)
    {
        Welcome.Text =  myResourceManager.GetString("LoggedInWelcomeText");
    }
    else
    {
        Welcome.Text = myResourceManager.GetString("LoggedOutWelcomeText");
    }

но когда я компилирую и запускаю его на своем локальном сервере, я получаю этот тип ошибки:

Не удалось найти ресурсы, соответствующие указанной культуре (или нейтральной культуре) на диске. baseName: resource locationInfo: fileName: resource.resources Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Resources.MissingManifestResourceException: не удалось найти на диске ресурсы, соответствующие указанной культуре (или нейтральной культуре). baseName: ресурс locationInfo: fileName: resource.resources

Ошибка источника:

Строка 89: else Строка 90: { Строка 91: Welcome.Text = myResourceManager.GetString("LoggedOutWelcomeText"); Строка 92: } Строка 93:

не могли бы вы помочь мне с этой проблемой?


person Bart    schedule 04.04.2010    source источник


Ответы (2)


Используйте GetLocalResourceObject(), который является частью базы System.Web.Page. Если вы хотите получить доступ к глобальным ресурсам, используйте GetGlobalResourceObject().

будь проще ;-)

person Elementenfresser    schedule 20.05.2010

Согласно MSDN, CreateFileBasedResourceManager ожидает компиляции файлы ресурсов. Обычно файлы .resx помещаются в App_LocalResources. У вас есть файлы в этом каталоге с именем resource.XXX.resources (где XXX — текущий идентификатор культуры) в этом каталоге.

У меня нет удобного VS, чтобы проверить это в проекте ASP.NET, но обычный способ обработки строк ресурсов — перейти к свойствам проекта, вкладке «Ресурсы» и создать там строки. Это создает строго типизированную оболочку вокруг ваших ресурсов, избегая необходимости явно создавать свой собственный ResourceManager.

person Timores    schedule 04.04.2010
comment
да, у меня есть default.aspx.en.resx и default.aspx.resx в App_LocalResources, а также есть строка с именем LoggedOutWelcomeText - person Bart; 04.04.2010
comment
Хорошо, но имена не начинаются с «ресурса», что вы говорите с вызовом CreateFileBasedResourceManager. - person Timores; 05.04.2010