2012-03-18 12 views
19

में() (कंस्ट्रैसिस) और {} (घुंघराले ब्रैकेट) के बीच अंतर दोनों के बीच क्या अंतर है। मैंने सोचा कि वे वही थे लेकिन आज मुझे एहसास हुआ कि वे नहीं हैं।रेजर

क्यों यह सही

@(Model.WillAttend == true ? 
    "This will be an exciting party with you" : 
    "So sorry. You'll lose the beeer") 

है और यह नहीं है:

@{Model.WillAttend == true ? 
    "This will be an exciting party with you" : 
    "So sorry. You'll lose the beeer"} 

उत्तर

24

कोष्ठक सिर्फ एक स्पष्ट अभिव्यक्ति है, और आप देखेंगे कि आप एक सेमी-कोलन जरूरत नहीं है। ब्रैकेट कोड कोड हैं, जो कोड के किसी भी अन्य भाग की तरह इस्तेमाल किए जाते हैं। अभिव्यक्तियों का HTML आउटपुट के रूप में सबमिट किया गया है, जबकि कोड ब्लॉक नहीं हैं।

फिल Haack वास्तव में एक good primer on some Razor syntax

5

लिखा आप WebForms से परिचित हैं, यह बहुत <% के बीच का अंतर =%> के समान है (या <%:%>) और <%%>। पूर्व का मूल्यांकन तब किया जाता है जब पृष्ठ पर आउटपुट किया जाता है, बाद वाला कोड कोड का एक ब्लॉक होता है जो जो कुछ भी कर सकता है (लेकिन पृष्ठ पर नहीं लिखा जाता है)।

4

प्रश्न के लिए: "दूसरा वैध क्यों नहीं है?", बेटी और जस्टिन के अलावा, जो भी आप दिखाते हैं उसके लिए विशिष्ट मुद्दे: घुंघराले ब्रेसिज़ के अंदर आपको सी # के सामान्य वाक्यविन्यास का पालन करने के लिए अपने कोड की आवश्यकता है। , तो आपके पास कुछ नतीजे दिए बिना, केवल एक ढीला "ए == बी? सी: डी" नहीं हो सकता है। और आपको अर्धविराम की आवश्यकता है। तो आप

@{string message = Model.WillAttend == true ? 
    "This will be an exciting party with you" : 
    "So sorry. You'll lose the beeer";} 
कह सकते हैं