У меня есть настраиваемый серверный элемент управления со свойством Title. При использовании элемента управления я бы хотел установить значение заголовка на странице aspx следующим образом:
<cc1:customControl runat = "server" Title='<%= PagePropertyValue%>' >
more content
</cc1:customControl>
Однако когда я это делаю, я получаю точное отображение String <% = PagePropertyValue%>, а не значение свойства, которое я хотел бы видеть.
Итак, попробовав выражение привязки данных (как предлагается ниже). Я не получаю строковый литерал, который выглядел плохо, но я тоже не получаю ничего другого.
<cc1:customControl runat = "server" Title='<%# PagePropertyValue%>' >
more content
</cc1:customControl>
Что мне нужно сделать с моим настраиваемым элементом управления, чтобы получить такое значение? Или мне нужно что-то сделать со страницей?





Попробуйте использовать синтаксис привязки данных:
<%# PagePropertyValue %>
Попробуйте вызвать label.DataBind (), и он должен отобразить все, что возвращает выражение.
Ты не можешь. <% =%> запишет строку непосредственно в поток ответов, что происходит после создания серверного элемента управления. См. Объяснение в эта почта.
Таким образом, это либо программный код, либо привязка данных <% # +, как предлагает Закари.
Чтобы значение свойства привязки работало правильно, как предлагается, у вас будет это в файле aspx или ascx:
<cc1:customControl runat = "server" Title='<%# PagePropertyValue %>' >
more content
</cc1:customControl>
Затем вам нужно будет фактически привязать данные на своей странице, которые вы должны добавить в свой код за файлом (код на C#)
protected void Page_Load(object sender, EventArgs e)
{
DataBind();
}
Таким образом, он свяжет данные в вашем файле ascx или aspx.
В ответ на свой вопрос я обнаружил, что действительно хотел использовать выражения ASP.NET с использованием синтаксиса <% $, поскольку то, что я хотел сделать, было помещено в локализованный контент.
Это можно сделать, по-видимому, без дополнительной обработки на стороне управления сервером.
<cc1:customControl runat = "server" Title='<%$ Resouces: ResourceFile, ContentKey %>' >
more content and controls
</cc1:customControl>
Это прекрасно работает.
Обратите внимание, что это характерно для атрибутов управления. При использовании внешних атрибутов синтаксиса <% =, означающих, что где-то еще на странице, синтаксис работает должным образом. Так что это <% = GetCapitalUserName ()%> вызовет правильный метод и вставит результат вызова на страницу.
Это сделало его пустым, а не фактической строкой кода. Я не реализую событие привязки данных к своему элементу управления. Я получаю аналогичные результаты с элементом управления меткой asp с обоими настройками. (используя свойство text).