2011-09-08 5 views
41

나는 다른 것을하려고합니다. 나는 이드를 포함하는 견해를 가지고있다. 이드의 가치에 따라 나는 표제를 바꾸고 싶다. 예 :CSHTML 페이지에서 switch 문 구현

나는 케이스의 사용이 가장 좋기 때문에 많은 케이스 조건을 가지고있다. 누구든지이 일을 어떻게 할 수 있고 일하도록 제안 할 수 있습니까? 구문 오류가 많이 발생하여 잘 코딩되지 않았을 수도 있습니다.

답변

103

귀하의 스위치는 완전히 블록에 동봉되어야하며 제대로 "깨진"할 필요가 다음 <h1> 태그 그 자체로 HTML 블록을 둘러싸

// 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;     
    } 
} 

때문에, 당신의 <text> 블록을 필요로하지 않을 수 있습니다 분리. 그것들을 포함하는 것이 나의 습관 일뿐입니다.

+10

전체 switch 문을 @ {} 블록으로 묶을 필요는 없습니다. –

+1

또한 ''을 제거 할 수 있습니다. html 태그를 사용하는 경우에는 필요하지 않습니다. 아래 @yoelhalb의 답변을 참조하십시오. – mattruma

+0

@ : 연산자를 사용할 수도 있습니다 ... – bicbmx

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

하는 @{} 블록에 전체 switch 문을 묶어야 할 필요가 없습니다 (조엘 Etherton의 게시물과는 달리)

귀하의 오류 기본적으로 일반 구문 오류가있는 면도기와는 아무 상관이 없다;

  1. 변수가 괄호

  2. 아니었다 스위치의 몸은 괄호

  3. 첫 번째 문 뒤에 아니오 "휴식"

    아니었다.

2

질문 제목과 같이 질문에 답변하지는 않지만 질문 본문에서 설명한 문제는 해결됩니다.

보기 모델 클래스를보기 모델로 사용하고 switch 문을 포함하는 메서드를 추가하십시오. 그런 다음 @Model.MethodWithSwitchStatement()을 통해 뷰에서 메서드를 호출하면됩니다. [id은 뷰 모델 객체에 저장할 수 있습니다.]

+0

OP에서 설명한 문제를 해결하는 올바른 방법입니다. – simoneL

관련 문제