Es lohnt sich zu verstehen, was die verschiedenen Markup-Tags innerhalb von ASP.NET Template Markup-Verarbeitung bedeuten:
<% expression %> - evaluates an expression in the underlying page language
<%= expression %> - short-hand for Response.Write() - expression is converted to a string and emitted
<%# expression %> - a databinding expression that allows markup to access the current value of a bound control
So den Wert eines ternären Ausdruck zu emittieren (err Konditionaloperator) Sie können entweder:
<%= (condition) ? if-true : if-false %>
oder Sie können writeL
<% Response.Write((condition) ? if-true : if-false) %>
Wenn Sie Databound-Kontrolle sind mit (wie ein Repeater, zum Beispiel), können Sie das Databinding-Format verwenden, um zu bewerten und das Ergebnis zu emittieren:
<asp:Repeater runat='server' otherattributes='...'>
<ItemTemplate>
<div class='<%# Container.DataItem(condition ? if-true : if-false) %>'> content </div>
</ItemTemplate>
</asp:Repeater>
Ein interessanter Aspekt der <% #%> Markup-Erweiterung ist, dass Sie kann innerhalb von Attributen eines Tags verwendet werden, während die anderen beiden Formen (<% und <% =) nur im Tag-Inhalt verwendet werden können (mit einigen speziellen Ausnahmefällen). Das obige Beispiel zeigt dies.
Für zukünftige Referenz wird es häufig als "der ternäre if-Operator" bezeichnet. –
@Greg: Es wird tatsächlich als der bedingte Operator bezeichnet. http://msdn.microsoft.com/en-us/library/ty67wk28.aspx – LukeH
@Luke In Fairness gegenüber Greg habe ich gesehen, dass es öfter als der Ternary-Operator referenziert als der Conditional. Bei if-Anweisungen wird normalerweise auf Conditional verwiesen. – James