Установите свойство Visible с тегом сервера <% =%> в Framework 3.5
Я работал в проекте .NET Framework 4, используя серверные теги, такие как <% = what%>, чтобы установить видимость элементов управления runat = "server", например:
<div id="MyId" runat="server" visible="<%=MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
Это работает в Framework 4, но сейчас, пытаясь использовать это в проекте Framework 3.5, он, похоже, не работает. Это только фреймворк Framework 4? Есть ли самая крутая (и .aspx сторона) альтернатива настройке видимости из codebehind? Я пользуюсь мерзким
MiId.Visible = MyVisiblePropertyOnCodeBehind
Заранее спасибо,
Том
[ИЗМЕНЕНО] РЕШЕНИЕ:
Спасибо за ваши комментарии, которые помогают мне понять мою проблему и ее решение!
Это была моя вина не только в одном.
В проекте VS2010 мы использовали <% # вместо <% =
Кроме того, я не заметил, что в проекте VS2010 мы использовали страницы, унаследованные не от «Page», а от класса CustomPage, который делал привязку автоматически, не замечая этого, и это заставляет меня думать, что это Framework 4.0 только особенность.
Как вы сказали здесь, если у вас есть следующая разметка:
<div id="MyId" runat="server" visible="<%# MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
Вы можете заставить это работать, добавляя следующее к codebehind:
public bool MyVisiblePropertyOnCodeBehind = true;
protected void Page_Load(object sender, EventArgs e) {
DataBind();
// Or if you want only for one control, MyId.DataBind();
}
Как я читал, этот DataBind () может снизить производительность приложения. У вас есть представление о том, сколько? Можно ли это понимать как «профессиональную» технику для больших проектов или, как вы думаете, ее следует избегать?
Мне нравится, как это делает разметку удобочитаемой и понятной в одном представлении, но я не хотел бы быть виновным в медленном коде из-за этого.