Разница в глобализации встроенных тегов в ASP.NET - PullRequest
5 голосов
/ 16 мая 2011

Есть ли какие-либо преимущества / недостатки в использовании встроенного тега записи вместо тега ресурса?Пример:

<%=Resources.Site.SampleString %>

Тег ресурсов (тег выражения), как видно из любого примера MSDN:

<asp:Literal id="Literal1" runat="server" text="<%$ Resources:Site, SampleString %>" />

Я считаю, что первый вариант гораздо проще, и он имеет IntelliSense, номожет быть, он не будет работать так же?

Ответы [ 2 ]

5 голосов
/ 17 мая 2011

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

Кстати, есть и другой способ - с помощью meta: resourcekey attribute . Таким образом, вы должны написать:

<asp:Literal id="Literal1" runat="server"
             meta:resourcekey="SampleString" text="Default one" />

и все должно работать точно так же.

РЕДАКТИРОВАТЬ при неявной локализации.

Что я забыл упомянуть, так это то, что с meta: resourcekey должны выполняться определенные условия. Условия:

  • Значения взяты из App_LocalResources, поэтому должен существовать связанный файл ресурсов
  • Имя файла связанного ресурса должно быть pagename.resx, например: Default.aspx.resx, Default.aspx.es.resx
  • Файл ресурса должен содержать ключи в форме resourcekey.propertyname, например, SampleString.Text, SampleString.ID (хотя я бы не стал локализовать идентификаторы элементов управления)
  • Из-за того, как генерируются ресурсы, упомянутый выше ключ должен существовать в инвариантном файле ресурсов (Default.aspx.resx), иначе он не будет локализован.
1 голос
/ 17 мая 2011

Через некоторое время я понял, что метод <%=Resources.Site.SampleString %> не имеет поддержки дизайнера (что понятно). Это не беспокоит меня, но это разница (для будущих читателей).

Так что, если вам нужна или нужна поддержка дизайнера, понадобится второй вариант.

...