2012-08-13 3 views
1

안녕 얘들 아 나는 면도기 구문이 이상한 문제가 있습니다.면도기 구문 렌더링 다중 문 코드 너겟

나는 인라인 표현식과 다중 문장 블록에서만 차이가있는 Razor 구문에서 동일한 코드 너겟을 작성했습니다.

About.cshtml

<!-- Single statement blocks --> 
    <p> 
     Put content here. 
     @Html.SubmitButton("You are in About") 
    </p> 

렌더링 된 출력 :
enter image description here

Index.cshtml

<!-- Inline expressions BUT DOESNT WORKS--> 
@{ Html.SubmitButton("okay in Index");} 

<!-- Multi-statement block BUT DOESNT WORKS--> 

@{ 
    Html.SubmitButton("You are in Index"); 
    Html.CheckBox("A Check Box"); 
} 

렌더링 된 출력 : enter image description here

P.S는 : 스냅 샷에서의 입력 버튼의 텍스트를 무시한다.

답변

4

htmlhelpers 만 반환 값입니다.

내부 코드 블록조차도 Razor가 그 값으로 무엇을 할 것인지 (HTML 버퍼로 출력) 말하기 위해서는 여전히 @이 필요합니다.

이 경우 코드 블록에는 신경 쓰지 않아도됩니다. 다른 코드는 없지만 HTML 도우미가 없으므로 중복 될 수 있습니다.

그러나 블록 내에 배치되는 다른 코드가 있었다하더라도, 당신은 여전히 ​​@와 헬퍼 서문해야 할 것 :`, var` 문 및`Html.Submit ("이상하다

@{ 
    var myVar = "something"; 
    // and so on ... 

    @Html.SubmitButton("You are in Index"); 
    @Html.CheckBox("A Check Box"); 
} 
+0

")'모두 유효한 C# 문이며 왜 다르게 취급합니까? –

+0

그들은 다르게 대우받지 못합니다. '@'가 없으면 Html.CheckBox *는 할 일을하고 있습니다. 원하는 경우 문자열을 반환하면 캡처하고 조작 할 수 있습니다. '@Html.CheckBox (...)'는 단지'Response.Write (Html.CheckBox (...))'의 단축형입니다. – Faust

+0

그래서 html로 렌더링하고 싶은 것은 간단합니다.'@' 기호? –