Файл ресурса для пользовательского элемента управления ASP.net (.ascx) InvalidOperationException - PullRequest
1 голос
/ 08 января 2010

У меня есть элемент управления, содержащий некоторый текст, который я хочу получить из файла resx. Я подумал, что мог бы просто создать файл с именем ControlName.ascx.resx, но он, похоже, не работает.

Я использую

label1.InnerText = (string)GetLocalResourceObject("default");

Чтобы получить значение из файла ресурсов, но он продолжает выдавать исключение InvalidOperation.

Прав ли я относительно того, как работают файлы resx или это работает только для страниц?

У меня такой же код, работающий на странице aspx.

Ответы [ 3 ]

4 голосов
/ 18 февраля 2010

Когда вы вызываете GetLocalResourceObject из пользовательского элемента управления, вы на самом деле звоните TemplateControl.GetLocalResourceObject, который ищет файл ресурсов в неправильном месте. Вам нужно позвонить HttpContext.GetLocalResourceObject вместо.

protected string HttpContextGetLocalResourceObjectAsString(string message)
{
  string path = HttpContext.Current.Request.Path;
  return (HttpContext.GetLocalResourceObject(path, message) as string);
}

Теперь вы можете сделать

label1.InnerText = HttpContextGetLocalResourceObjectAsString("default");
0 голосов
/ 04 ноября 2010

Год спустя или около того, но я думаю, что это то, что вы ищете?

var resource = HttpContext.GetLocalResourceObject(TemplateControl.AppRelativeVirtualPath, termType.ToString());

Отметьте ответ, если это тот!

0 голосов
/ 08 января 2010

По документации:

Получает ресурс уровня страницы

http://msdn.microsoft.com/en-us/library/system.web.httpcontext.getlocalresourceobject.aspx

Редактировать - добавлено

Может быть, меньше труда просто добавить строку в web.config и взять ее оттуда.

<configuration>
  <appSettings>
    <add key="LoggingSystemId" value="B2F085A9-6EC1-4CBF-AF8B-B17BFA75AD81"/>
  <appSettings>
...

обозначается следующим образом:

logger.SystemId = System.Configuration.ConfigurationManager.AppSettings["LoggingSystemId"];

Конечно, вам понадобится ссылка на dll System.Configuration.

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