Как получить строки ресурсов из разметки ASP.NET? - PullRequest
7 голосов
/ 24 декабря 2010

Привет, у меня есть сборка, которая называется X.Common.DLL.Есть несколько файлов ресурсов для мультиязычного приложения.Допустим, это Language.resx Language.en-US.resx .... и т. Д. *

У меня есть веб-приложение, которое содержит эту выше DLL в качестве ссылки ...

как я могу использовать этот файл ресурсов на стороне разметки моих веб-приложений?

Text="<%$ Resources:Class, ResourceKey %>" недопустимо, поскольку имя "Class" находится в другой сборке ...

Ответы [ 2 ]

3 голосов
/ 24 декабря 2010

Вы можете легко создать класс-оболочку, который делает что-то вроде этого

public class ResourceWrapper
{
     private ResourceManager resourceManager;

     public ResourceWrapper()
     {
         resourceManager = new ResourceManager("Namespace.Common", Assembly.Load("x.common"))
     }

     public string String(string resourceKey)
     {
         return ResourceManager.GetString(resourceKey);
     }
 }     

Найти правильное имя для первого параметра для нового ResourceManager (...) иногда бывает немного сложно.Чтобы вам было проще, вы можете позвонить так:

Assembly.Load("x.common").GetManifestResourceNames() and check the returned results.

Если вы создаете статическую оболочку, вы можете сделать код вызова ресурса простым, как этот:

<%= Resource.String("MyResourceKey") %>
0 голосов
/ 24 декабря 2010

Вы должны ссылаться на другую сборку в web.config, чтобы представить ее содержимое в веб-формах.http://msdn.microsoft.com/en-us/library/ms164642.aspx

Редактировать: более подробный ответ из-за комментариев: Вы должны завершить раздел страниц / пространств имен веб-конфигурации следующим образом:

<pages>
    <namespaces>
        ...
        <add namespace="My.Fully.Qualified.Namespace"/>
    </namespaces>   
</pages>

Конечно, сборка, которая предоставляет пространства иментакже должны быть ссылки (ссылки на проекты, раздел web.config)

Тогда вы сможете писать что-то вроде "<% = MyResx.MyEntry%>

...