Vale la pena entender lo que significan las diferentes etiquetas de marcado dentro de ASP.NET procesamiento formato de plantilla:
<% 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
Así que para emitir el valor de una expresión ternaria (errar operador condicional) También se puede usar:
<%= (condition) ? if-true : if-false %>
o puede writeL
<% Response.Write((condition) ? if-true : if-false) %>
Si se usa el control de enlace de datos (como un repetidor, por ejemplo), puede utilizar el formato de enlace de datos para evaluar y emitir el resultado:
<asp:Repeater runat='server' otherattributes='...'>
<ItemTemplate>
<div class='<%# Container.DataItem(condition ? if-true : if-false) %>'> content </div>
</ItemTemplate>
</asp:Repeater>
Un aspecto interesante de la #%> extensión de marcado <% es que se puede usar dentro de los atributos de una etiqueta, mientras que las otras dos formas (<% y <% =) solo se pueden usar en el contenido de la etiqueta (con algunas excepciones de casos especiales). El ejemplo anterior demuestra esto.
Para referencia futura, con frecuencia se lo conoce como "el operador ternario si". –
@Greg: en realidad se conoce como el operador condicional. http://msdn.microsoft.com/en-us/library/ty67wk28.aspx – LukeH
@Luke Para ser justos con Greg, lo he visto mencionar más veces como operador ternario que como condicional. Condicional usualmente se hace referencia cuando se habla de declaraciones if. – James