Встроенный код неправильно интерпретируется в атрибуте на стороне сервера - PullRequest
0 голосов
/ 01 августа 2011

Возьмите следующий код:

<asp:TextBox ID="txtFirstName" runat="server" title='<%=Resources.Constants.EmptyFirstName%>' /><em>*</em>

Это фактически генерирует атрибут заголовка <%=Resources.Constants.EmptyFirstName%>, а не выполняет код (следовательно, возвращает правильное значение).

Есть ли какая-либо причиназа это?Есть ли исправление?

Ответы [ 4 ]

1 голос
/ 01 августа 2011

Почему бы вам просто не установить значение атрибута в коде файла?

txtFirstName.Attributes.Add("title",Resources.Constants.EmptyFirstNam);
1 голос
/ 01 августа 2011

Серверные элементы управления не могут использовать интерпретированные теги '<% =%>'. Проще просто установить значение в коде, но если вам действительно нужна логика в aspx, вы можете использовать выражения привязки данных:

В aspx измените свой тег на тег привязки данных:

<asp:TextBox ID="txtFirstName" runat="server" title='<%#=EmptyName()%>' /><em>*</em>

Добавьте эту функцию в ваш код:

public string EmptyName() {
    return Resources.Constants.EmptyFirstName
}

Это громоздко, так как вам все равно нужно позвонить txtFirstName.DataBind()

0 голосов
/ 01 августа 2011

Если вы решили сделать это в aspx-файле, а не в коде позади, ознакомьтесь с этой статьей о построителях выражений: http://www.4guysfromrolla.com/articles/022509-1.aspx

0 голосов
/ 01 августа 2011

Почему бы вам не установить значение в OnInit в CodeBehind-файле?

...