Доступ к ресурсу из серверного компонента в ASP .NET - PullRequest
1 голос
/ 09 сентября 2010

Я новичок в черном искусстве разработки ASP .NET, так что простите, если это глупый вопрос. Немного погуглив и прочитав хотя бы (некоторые из ...) ASP .NET 3.5 Unleashed, мне еще предстоит найти способ делать то, что я хочу - что обычно либо означает, что я пытаюсь сделать что-то глупое, либо это так очевидно, что я пропустил это:)

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

Для этого, естественно, требуется локализация некоторого текста.

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

Однако у меня возникли проблемы с доступом к этим ресурсам из моего компонента.

Создав в проекте A в папке App_GlobalResources файл ресурсов с именем CreateOrEditUserControl.da.resx (примечание: нужно ли мне добавлять папку App_GlobalResources в веб-конфигурацию или что-то в этом роде?). Проект A включает в себя CreateOrEditUserControl, который взят из проекта B и загружен через ссылку на сборку. CreateOrEditUserControl.da.resx содержит ключ UserName, сопоставленный со строкой Brugernavn (это, как вы уже догадались, только датская локализация) *

Внутри моего элемента управления в методе CreateChildControls () (поскольку мне нужны здесь локализованные строки), я попытался получить доступ к ресурсам следующими способами:

HttpContext.GetGlobalResource("CreateOrEditUserControl","UserName");
HttpContext.GetGlobalResource("CreateOrEditUserControl.da","UserName");
HttpContext.GetGlobalResource("CreateOrEditUserControl.da.resx","UserName");
HttpContext.GetLocalResource("CreateOrEditUserControl.da.resx","UserName");

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

До сих пор мне приходилось прибегать к "хаку", при котором вы можете указать язык в строке запроса, а я вручную вставлю строки. Однако это нежелательно, поскольку любое изменение потребует изменения компонента, а не только пользователя ...

Как правильно это сделать - если есть?

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

1 Ответ

0 голосов
/ 09 сентября 2010

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

Я почти ничего не знаю об ASP.Net, но если бы у меня был общий элемент управления для использования на разных страницах или в различных приложениях, я бы включил переводимые ресурсы «внутри» этого элемента управления. Тогда вам не придется локализовать его для каждого проекта, но только один раз. Я почти уверен, что это возможно в ASP.Net.

Что касается доступа к глобальным ресурсам (опять же извините за мои ограниченные знания), вам, вероятно, придется использовать ResourceManager или ResourceReader.

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