2009-07-01 3 views
0

Я немного новичок в разработке .Net, который работает на Java уже некоторое время. У меня есть страница aspx, и нам нужно вытеснить некоторые строки, чтобы сделать ее более гибкой.Interpolation Property Aspx

Если у меня есть таблица где-то и есть только строка, сидя за пределами осины тега, я могу заменить его так, чтобы

<th> Specific Foo String </th> 

становится

<th> <%= Strings.foo %> </th> 

и все в порядке, проблема Я сталкиваюсь с тем, как вы делаете такую ​​интерполяцию на свойство asp tag

Я попытался изменить

<asp:Label runat="server" ID="lblFoo" Text="Specific Foo String Entry" /> 

в

<asp:Label runat="server" ID="lblFoo" Text='<%= Strings.foo %> Entry' /> 

и

<asp:Label runat="server" ID="lblFoo" Text='<%#Eval("Strings.foo") %> Entry' /> 

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

Благодаря

ответ

2

Я думаю, что вы хотите сделать это:

<asp:Label runat="server" id="label1" Text='<%# Strings.Foo + " Entry"%>' /> 

Затем в коде позади (скорее всего, в вашем OnPageLoad) вам нужно вызвать

if(!Page.IsPostBack) Page.DataBind(); 

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

Также обратите внимание, что мне пришлось переместить текст «Ввод» в оператор привязки. Если она находится за пределами последнего «%>», то привязка не работает, и он будет выплевывать:

<% # Strings.foo%> Вступление

0

В коде страницы вы могли бы сделать это:

lblFoo.Text = Strings.foo + " Entry"; 

Хорошее место, чтобы поместить этот код будет в перекрываться OnLoad метод, но это просто предложение, как я не знакомы с вашим приложением и потребностями жизненного цикла вашей страницы.

Если вы хотите, чтобы все это сделать на странице ASPX, то просто это сделать:

<span><%= Strings.foo %> Entry</span> 

как Label делает как интервал в любом случае.

+0

Спасибо за ваш ответ, хотя это будет работать в простом случае, у меня есть большое приложение с более сложными случаями (заголовки ретрансляторов и многое другое). Я надеялся, что это будет способ сделать это, не вычисляя жизненные потребности каждой страницы и не найдя лучшей стратегии реализации. Более академично, чем практически, можно выполнить интерполяцию свойств на уровне aspx или это зарезервировано только для кода? Но опять же, спасибо за ответ. – ihumanable

0

Если ваша цель является HTML table строк, то вы можете создать либо ListView, либо GridView и DataBind.Это избавит вас от необходимости записывать все ваши свойства и также будет создавать правильные теги таблицы для данных.

Не зная больше о ваших данных, я не могу предоставить подробный фрагмент кода.

0

Вы говорите о ресурсах. Прочитайте Basic Instincts Resources and Localization in ASP.NET 2.0, в котором показан встроенный редактор ресурсов, и как использовать привязку «<% $ ...%>» или использовать атрибут meta: resourceKey.