2011-01-22 5 views
123

मैं नए राज़ोर व्यू इंजन के साथ अपने पुराने .aspx विचारों को अपडेट कर रहा हूं।उपयोग कैसे करें? : यदि रेजर और इनलाइन कोड ब्लॉक के साथ बयान

<span class="vote-up<%= puzzle.UserVote == VoteType.Up ? "-selected" : "" %>">Vote Up</span> 

आदर्श रूप में मैं यह करने के लिए करना चाहते हैं:

  1. [email protected]{puzzle.UserVote:

    <span class="[email protected]{puzzle.UserVote == VoteType.Up ? "-selected" : ""}">Vote Up</span> 
    

    लेकिन वहाँ यहाँ दो समस्याओं है मैं स्थानों में से एक गुच्छा जहां मैं इस तरह कोड होता है। ... कोड ब्लॉक

  2. @puzzle.UserVote == VoteType.Up की शुरुआत के रूप में @ प्रतीक का इलाज नहीं कर रहा है, जैसा कि यह पहले भाग @puzzle.UserVote जैसा दिखता है चर के मूल्य प्रस्तुत करना चाहिए।

कोई भी इन मुद्दों को हल करने का तरीका जानता है?

+6

मैंने रेजर का उपयोग नहीं किया है, लेकिन जो कुछ मैं देख रहा हूं उसके आधार पर, '@ (puzzle.UserVote == वोटटेप.अप? "- चयन किया गया": "") ' –

उत्तर

239

यह काम करना चाहिए:

<span class="[email protected](puzzle.UserVote == VoteType.Up ? "-selected" : "")">Vote Up</span> 
+0

माता-पिता का उपयोग करने के लिए बहुत अजीब है ब्रेस –

29

कुंजी @ सीमांकक के बाद कोष्ठकों में अभिव्यक्ति संपुटित है। आप किसी भी यौगिक अभिव्यक्ति को इस तरह से काम कर सकते हैं।

8
@(condition ? "true" : "false") 
+1

मैं इस के लिए गया, साफ महसूस करता है और बाद में पढ़ने के लिए आसान है –

+1

यदि आपको ToString() को कॉल करने के बजाय किसी संपत्ति (स्ट्रिंग समेत) का मान प्रदर्शित करने की आवश्यकता है - जो मेरे मामले में काम नहीं करता है। आप यह कर सकते हैं @ (हालत? $ "{Foo.bar}": "डिफ़ॉल्ट") –

1

ज्यादातर मामलों CD.. की the solution में बिल्कुल ठीक काम करेंगे। हालांकि मैं थोड़ा अधिक मुड़ स्थिति थी:

@(String.IsNullOrEmpty(Model.MaidenName) ? "&nbsp;" : Model.MaidenName) 

यह मैं मुद्रित होगा "& nbsp;" मेरे पृष्ठ में, क्रमशः &amp;nbsp; स्रोत उत्पन्न करते हैं।

Compiler Error Message: CS0173: Type of conditional expression cannot be determined because there is no implicit conversion between 'System.Web.IHtmlString' and 'string'

तो मैं निम्नलिखित की तरह एक बयान लिखने के समाप्त हो गया है, जो कम अच्छा लेकिन काम करता है: अब वहाँ एक समारोह Html.Raw("&nbsp;") जो यह बताने के लिए आप स्रोत कोड लिखते हैं, इस तारामंडल में छोड़कर यह एक संकलक त्रुटि फेंकता माना जाता है है यहां तक ​​कि मेरे मामले में:

@if (String.IsNullOrEmpty(Model.MaidenName)) { @Html.Raw("&nbsp;") } else { @Model.MaidenName } 

नोट: दिलचस्प बात यह है, एक बार आप घुंघराले ब्रेस के अंदर हैं, तो आप एक उस्तरा ब्लॉक को पुनः आरंभ करने की है।

संबंधित मुद्दे