Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Не работает директива препроцессора


Автор: Dedal 16.5.2007, 13:26
Не уверен, что правильно сформулировал тему. Дело вот в чем. Есть ascx-компонент с таким вот кодом:
Код

<div id="header" style="background: url('<%#imagelink %>') top left">


Насколько я понимаю <%#imagelink %> это директива препроцессора. Значение imagelink должно вычисляться в codebehind. И оно вычисляется, но не подставляется в генерируемый html. В итоге получается такой код: 
Код

<div id="header" style="background: url('') top left">


В чем тут может быть дело?

Автор: Mymik 16.5.2007, 23:12
Dedal<%# %> работает только лишь в контролах типа GridView/DataGrid, Repeater, DataList. И осуществляет привязку к DataSource родительского объекта. 
В остальных частях страницы вы должны использовать 
<%= %> А так же метод или моле должны быть приведены к типу string. Вообще <%= %> распознается как Response.Write() ну а он принимает string. 

P.S. <%= %> работает и в GridView/DataGrid, Repeater, DataList. Применяется для обращения к элементам находящимся на данной странице или методам(/полям) находящимся в behind-code

Автор: SpaceSpace 17.5.2007, 08:15
Грязный хак:

Не делай так:

Код

 <div id="header" style="<%# getStyle(Container.DataItem)%>"> 


в бехайнде соответственно getStyle конструирует всю строку

"background: url('imagelink') top left"

Не делай smile

Автор: Dedal 18.5.2007, 15:54
MymikSpaceSpace, спасибо, работает smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)