ASP.Net Placeholder против директивы if
При работе с разметкой, если я хочу включить некоторый контент условно, я использую заполнитель обычным способом:
<asp:Placeholder Visible=<%# IsExpired %>
<span>Prolong your subscription</span>
</asp:PlaceHolder>
Также я могу использовать if-директиву:
<% if(IsExpired) {%>
<span>Prolong your subscription</span>
<% }%>
Я предпочитаю использовать первый только потому, что он не делает мою разметку грязной. И каков наилучший способ условно включить контент? С точки зрения производительности, они похожи?
3 ответа
Родные теги HTML всегда быстрее, чем рендеринг серверных элементов управления, так как на их рендеринг не тратится время
Я думаю, что с производительностью вряд ли что-то связано с тем, какой путь вы выберете. Но на самом деле вы можете использовать следующий код:
<asp:Label runat="server" Visible=<%# IsExpired %>
Prolong your subscription</asp:Label>
вместо двух других. Это может сделать его более простым.
Я бы никогда не использовал код C# в представлении веб-форм. Кроме того, я буду избегать установки свойства Visible в разметке, и я установлю его в коде позади некоторого события.
phWhatever.Visible = IsExpired;
Довольно часто вы можете избежать создания свойства IsExpired.
Конечно, то, что предложил Джонни, правильно. Если вам нужно скрыть то, что фактически является только одним элементом управления, вы скрываете элемент управления напрямую.