2009-11-30 10 views
9

と(C#の):私は条件付きでResponse.Writeをしたい.aspxの内部使用についてコンバイン 'イン・ラインIF' 従来のC#のコードブロック内のResponse.Write

"myInt = (<condition> ? <true value> : <false value>)" 

が、何:

<% (Discount > 0 ? Response.Write("$" + Html.Encode(discountDto.Discount.FlatOff.ToString("#,###."): "")%> 

MNYのTHX

+3

将来的には、これはしばしば「3値のif演算子」と呼ばれます。 –

+2

@ Greg:実際には条件演算子と呼ばれています。 http://msdn.microsoft.com/en-us/library/ty67wk28.aspx – LukeH

+0

@ルークグレッグへの公平性において、私はそれが条件付きのものよりも三項演算子として参照されるのを見てきました。条件文は、通常、if文について言及するときに参照されます。 – James

答えて

19

それは別のマークアップタグは、ASP.NETテンプレートマークアップの処理中に何を意味するかを理解する価値がある:あなたができる

<% 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 

だから三式の値(条件演算子を誤る)を放出するためのいずれかの使用:

<%= (condition) ? if-true : if-false %> 

か、WRITELできる

<% Response.Write((condition) ? if-true : if-false) %> 

あなたが(例えば、リピータのような)データ・バインドコントロールを使用していた場合、あなたはその結果を評価し、放出するためにデータバインディング形式を使用することができます。

<asp:Repeater runat='server' otherattributes='...'> 
    <ItemTemplate> 
      <div class='<%# Container.DataItem(condition ? if-true : if-false) %>'> content </div> 
    </ItemTemplate> 
</asp:Repeater> 

<%の#%の>マークアップ拡張機能の興味深い側面は、ということです他の2つのフォーム(<%と<%=)は、タグの内容の中で使用することができます(特別なケースを除いていくつかの例外があります)。上の例はこれを示しています。

+0

さまざまなマークアップタグを一覧表示するために余計な努力をしていただきありがとうございます。「#」の例を含めることができますか? – justSteve

+0

私が知っている限り、あなたはタグ属性の中で言及した3種類の '<% %>'バリエーションのどれかを使用できます。それはなぜ彼らのうちの1つだけに制限されるのだろうか? 'runat =" server "属性を持つタグだけを参照していない限り... –

+0

私はもっとはっきりしていたはずです。 'runat =" server "'タグは<%、<%=マークアップ展開をサポートしていません。しかし、これにも例外があります。例えば、メタタグはこれらを内部で拡張します。 – LBushkin

9
<%= 
    (Discount > 0) 
     ? "$" + Html.Encode(discountDto.Discount.FlatOff.ToString("#,###.")) 
     : "" 
%> 
3

全体の周りのResponse.Writeを置く: - ?操作:

<% Response.Write(Discount > 0 ? "$" + Html.Encode(discountDto.Discount.FlatOff.ToString("#,###.") : "") %> 
関連する問題