Я работал в проекте .NET Framework 4, используя теги сервера, такие как <% = whatever% > , чтобы установить видимость элементов управления runat = "server", например:
<div id="MyId" runat="server" visible="<%=MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
Это работает на платформе 4, но теперь, пытаясь использовать это в проекте Framework 3.5, похоже, что это не работает. Является ли это только функцией Framework 4? Есть ли самая крутая (и .aspx сторона) альтернатива настройке видимости от codebehind? Я использую уродливый:
MiId.Visible = MyVisiblePropertyOnCodeBehind
Спасибо заранее,
Tom
[EDITED] РЕШЕНИЕ:
Спасибо за ваши комментарии, которые заставляют меня понять мою проблему и решение!
Это была моя ошибка не только в одном.
В проекте VS2010 мы использовали <% # вместо <% =
Кроме того, я не заметил, что в проекте VS2010 мы использовали страницы, унаследованные не от "Страница", а из класса 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() может снизить производительность приложения. У вас есть представление о том, сколько? Можно ли это понимать как "профессиональную" технику, которая будет использоваться в крупных проектах, или вы думаете, что ее следует избегать?
Мне нравится, как он делает разметку доступной и удобной для понимания в одном представлении, но я бы не хотел быть виновным в медленном коде, потому что это.