2015-06-18 2 views
0

Я пытаюсь использовать файлы ресурсов в приложении ASP.NET Web Forms (.NET 4.0). Я использую VS2012. У меня есть следующие файлы внутри папки App_GlobalResources:Файл ресурсов не подбирается при использовании выражения ASP.NET

  • Address.resx (язык по умолчанию, английский)
  • Address.ja-JP.resx (японский)

Проблема заключается в том, когда я пытаюсь отобразить текст на японском языке на странице ASP.NET (* .aspx-файл). Если я использую следующий синтаксис все работает отлично:

<%= Resources.Address.Street1 %> 

Но когда я пытаюсь привязать его к свойству в asp:Label управления по умолчанию текст (на английском языке) отображается вместо японски:

<asp:Label ID="lblStreet1" runat="server" Text='<%$ Resources:Address,Street1 %>'></asp:Label> 

КСТАТИ культура создается в переменные сессии, а затем в главной странице у меня есть что-то вроде этого:

Thread.CurrentThread.CurrentCulture = (CultureInfo) Session["ci"]; 
Thread.CurrentThread.CurrentUICulture = (CultureInfo) Session["uci"]; 

Кроме того, я не знаю, если это уместно, или нет, но я Generat ed Address.ja-JP.resx вне Visual Studio (с помощью Notepad ++), а затем переместил файл в папку App_GlobalResources и включил файл в решение.

Я что-то упустил?

ответ

1

Я был в состоянии найти решение моей проблемы. В коде позади мне пришлось переопределить метод InitializeCulture, я сделал что-то вроде этого:

protected override void InitializeCulture() 
{ 
    Thread.CurrentThread.CurrentCulture = (CultureInfo) Session["ci"]; 
    Thread.CurrentThread.CurrentUICulture = (CultureInfo) Session["uci"]; 

    base.InitializeCulture(); 
} 
0

Я бы порекомендовал вам взглянуть на использование мета: resourcekey в элементе управления меткой. В вашем случае вы могли бы использовать:

<asp:Label ID="lblStreet1" runat="server" meta:resourcekey="myStreet1Label"></asp:Label> 

ключевой ресурс в ваших Resx файлов затем будет так:

<data name="myStreet1Label.Text"> 
<value xml:space="preserve">The street data.</value></data> 
+0

Благодаря d-блок, который может работать, но я не хочу идти по этому пути. Слишком много страниц уже используют синтаксис выражения: '<%$ ... %>' :( –

+0

В этом случае, возможно, попробуйте использовать HttpContext.GetGlobalResourceObject.

+0

Спасибо, я попробовал с' Text =' <% # GetGlobalResourceObject ("Адрес", "Street1")%> '> ', но он не работает ... –

Смежные вопросы