Как заставить мой серверный элемент управления ASP.NET принимать встроенный блок кода в качестве значения свойства? - PullRequest
7 голосов
/ 22 декабря 2008

У меня есть собственный серверный элемент управления со свойством Title. При использовании элемента управления я хотел бы установить значение заголовка на странице aspx следующим образом:

<cc1:customControl runat="server" Title='<%= PagePropertyValue%>' >
more content
</cc1:customControl>

Однако, когда я делаю это, я получаю отображаемую точную строку <% = PagePropertyValue%>, а не значение свойства, которое я хотел бы видеть.

Итак, после попытки выражения привязки данных (как предложено ниже). Я не получаю строковый литерал, который выглядел плохо, но я также не получаю ничего другого.

<cc1:customControl runat="server" Title='<%# PagePropertyValue%>' >
more content
</cc1:customControl>

Что мне нужно сделать, чтобы мой пользовательский элемент управления принял такое значение? Или мне нужно что-то сделать со страницей.

Ответы [ 5 ]

7 голосов
/ 22 декабря 2008

Ты не можешь. <% =%> запишет строку непосредственно в поток ответов, что происходит после создания серверного элемента управления. См. этот пост для объяснения.

Так что это либо кодовая часть, либо <% # + привязка данных, как предполагает Захари. </p>

2 голосов
/ 30 декабря 2008

В качестве продолжения моего собственного вопроса я обнаружил, что я действительно хотел использовать выражения ASP.NET с использованием синтаксиса <% $, поскольку я хотел поместить его в локализованный контент. </p>

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

<cc1:customControl runat="server" Title='<%$ Resouces: ResourceFile, ContentKey %>' >
more content and controls
</cc1:customControl>

Это прекрасно работает.

1 голос
/ 22 декабря 2008

Чтобы значение свойства связывания работало правильно, как предлагается, оно будет в файле aspx или ascx:

<cc1:customControl runat="server" Title='<%# PagePropertyValue %>' >
more content
</cc1:customControl>

Затем вам нужно будет на самом деле связать данные на своей странице, которые вы должны добавить в свой код за файлом (код в C #)

protected void Page_Load(object sender, EventArgs e)
{
    DataBind();
}

Таким образом он будет связывать данные в вашем файле ascx или aspx.

1 голос
/ 22 декабря 2008

Попробуйте использовать синтаксис привязки данных: <%# PagePropertyValue %>

0 голосов
/ 20 мая 2009

Обратите внимание, что это относится к атрибутам управления. При использовании <% = синтаксиса вне атрибутов управления, означающего где-либо еще на странице, синтаксис работает как ожидалось. Так это <% = GetCapitalUserName ()%> вызовет правильный метод и введет результат вызова на странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...