2011-09-08 10 views
41

में एक स्विच स्टेटमेंट कार्यान्वित करना मैं कुछ अलग करने की कोशिश कर रहा हूं। मेरे पास एक दृश्य है जिसमें एक आईडी है। आईडी के मूल्य के आधार पर मैं दिखाई देने वाले शीर्षक को बदलना चाहता हूं। कुछ ऐसा:एक CSHTML पृष्ठ

@{ switch id 
    case "test": @;<h1>Test Site</h1> 
    case "prod": @:<h1>Prod Site</h1> 
    break; 
} 

मेरे पास बहुत सी केस स्थितियां हैं इसलिए मैं मामले का उपयोग सबसे अच्छा होगा। क्या कोई सुझाव दे सकता है कि मैं इसे कैसे कर सकता हूं और इसे काम पर ला सकता हूं? मुझे बहुत सी वाक्यविन्यास त्रुटियां मिल रही हैं, इसलिए मुझे लगता है कि यह अच्छी तरह से कोडित नहीं है।

उत्तर

103

आपका स्विच पूरी तरह से एक ब्लॉक में संलग्न करने की आवश्यकता है और यह "टूटे" ठीक से करने की जरूरत है:

// Use the @{ } block and put all of your code in it 
@{ 
    switch(id) 
    { 
     case "test": 
      // Use the text block below to separate html elements from code 
      <text> 
       <h1>Test Site</h1> 
      </text> 
      break; // Always break each case 
     case "prod": 
      <text> 
       <h1>Prod Site</h1> 
      </text> 
      break; 
     default: 
      <text> 
       <h1>WTF Site</h1> 
      </text> 
      break;     
    } 
} 

क्योंकि <h1> टैग द्वारा स्वयं एचटीएमएल ब्लॉक संलग्न हैं, आप के लिए <text> ब्लॉक की जरूरत नहीं हो सकता है जुदाई। यह सिर्फ उन्हें शामिल करने की मेरी आदत है।

+10

पूरे स्विच स्टेटमेंट को @ {} ब्लॉक में संलग्न करने की आवश्यकता नहीं है। –

+1

आप '' से भी छुटकारा पा सकते हैं। यदि आप एचटीएमएल टैग का उपयोग कर रहे हैं तो इसकी आवश्यकता नहीं है। नीचे @yoelhalb से जवाब देखें। – mattruma

+0

आप @: ऑपरेटर का उपयोग भी कर सकते हैं ... – bicbmx

38
@switch (id) 
{ 
    case "test": <h1>Test Site</h1> 
    break; 
    case "prod": <h1>Prod Site</h1> 
    break; 
} 

, एक @{} ब्लॉक में पूरे स्विच बयान संलग्न करने की कोई जरूरत नहीं है (जोएल Etherton पद के विपरीत)

आपका त्रुटियों मूल रूप से नियमित रूप से वाक्य रचना त्रुटियाँ हैं और रेजर से लेना देना नहीं है;

  1. चर कोष्टक

  2. में नहीं था स्विच के शरीर कोष्ठक

  3. पहले बयान के बाद कोई "तोड़" में नहीं था।

2

यह प्रश्न के शीर्षक से संकेतित आपके प्रश्न का उत्तर नहीं देता है, लेकिन यह प्रश्न के शरीर में वर्णित समस्या को हल करता है।

व्यू मॉडल के रूप में व्यू मॉडल क्लास का उपयोग करें और एक विधि जोड़ें जिसमें switch कथन शामिल है। फिर बस @Model.MethodWithSwitchStatement() के माध्यम से दृश्य से विधि को कॉल करें। [id दृश्य मॉडल ऑब्जेक्ट में सहेजा जा सकता है।]

+0

ओपी में वर्णित समस्या को हल करने का सही तरीका है – simoneL

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