2009-11-30 11 views
9

एक पारंपरिक सी # कोड ब्लॉक में साथ:कम्बाइन एक 'में लाइन यदि' (सी #) response.write

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

लेकिन एक .aspx जहाँ मैं सशर्त response.write करना चाहते हैं अंदर उपयोग के बारे में क्या:

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

mny tHX

+3

भविष्य के संदर्भ के लिए, इसे अक्सर "ऑपरेटर अगर टर्नरी" कहा जाता है। –

+2

@ ग्रेग: इसे वास्तव में सशर्त ऑपरेटर के रूप में जाना जाता है। http://msdn.microsoft.com/en-us/library/ty67wk28.aspx – LukeH

+0

@Luke ग्रेग के निष्पक्षता में मैंने इसे सशर्त से टर्नरी ऑपरेटर के रूप में अधिक बार संदर्भित किया है। कथन के बारे में बात करते समय आमतौर पर सशर्त संदर्भित किया जाता है। – 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> 

<% #%> मार्कअप विस्तार की एक दिलचस्प पहलू यह है कि है इसका उपयोग टैग के गुणों के अंदर किया जा सकता है, जबकि अन्य दो रूपों (<% और <% =) का उपयोग केवल टैग सामग्री (कुछ विशेष केस अपवादों के साथ) में किया जा सकता है। ऊपर दिया गया उदाहरण यह दर्शाता है।

+0

विभिन्न मार्कअप टैग्स को सूचीबद्ध करने के अतिरिक्त प्रयासों की बहुत सराहना करते हैं - क्या आप "#" का उदाहरण शामिल करने के लिए विस्तार कर सकते हैं? – justSteve

+0

जहां तक ​​मुझे पता है, आप किसी टैग विशेषता के अंदर उल्लिखित तीनों '<% %> 'भिन्नताओं का उपयोग कर सकते हैं। यह केवल उनमें से केवल एक तक ही सीमित क्यों होगा? जब तक आप केवल 'runat = "सर्वर" विशेषता के साथ टैग का जिक्र नहीं कर रहे थे ... –

+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("#,###.") : "") %> 
संबंधित मुद्दे