2014-11-21 2 views
2

나는이 작동하지 않습니다 이유를 이해 힘든 시간을 겪고있는 블록 :루프 내부의 경우 HTML

@if ((Model.doaFormGroupDocuments.Count != 0) || (Model.doaFormGroupDocuments != null)) 
{ 
    @for(var i = 0; i < Model.doaFormGroupDocuments.Count; i++) 
    { 
     @Html.HiddenFor(model => model.doaFormGroupDocuments[i].Checked) 
     @Html.HiddenFor(model => model.doaFormGroupDocuments[i].Id) 
     @Html.HiddenFor(model => model.doaFormGroupDocuments[i].Name) 
    } 
} 

내가 루프 옆에 @ 아래에 빨간색 오류 선을 얻고있다. 이것은 HTML에서 허용되지 않습니까?

+3

사이드 노트 : 당신이 오류로 실행할 수 있습니다,'.Count'을 사용할 수 없습니다 doaFormGroupDocuments == null', 그래서 순서의'경우 if 문에서의 비교는 이것과 반대가되어야한다. (그리고 그것은'&&'not'||'이어야한다.)'if ((Model.doaFormGroupDocuments! = null) && (Model.doaFormGroupDocuments.Count! = 0))' – entropic

+0

[@ "문자 다음에 예상치 못한"foreach "키워드가 중복 될 수 있습니다 (http://stackoverflow.com/questions/4946334/unexpected-foreach-keyword-after-character) –

답변

3

John, ASP.NET MVC처럼 보입니다. 그렇다고 가정합니다. 당신이이 HTML의 컨텍스트를 전환 <text> 또는 @: HTML 태그를 가질 때 발생하는

는 두 개의 컨텍스트, HTML 및 면도기를 가지고 당신이이 면도기 컨텍스트로 전환 @ 가지고있는 시간입니다.

Visual Studio에서 if 문을 통해 면도기 컨텍스트에 있고 @for를 사용하여 면도기 컨텍스트에 다시 들어가려고하면 Visual Studio에서 불평을합니다. for 루프 전에 @를 제거하면됩니다. 또한 참고로, for 루프 내의 세 도우미 호출은 IHtmlString을 반환한다는 것을 알고 있기 때문에 올바르게 처리됩니다.

1

당신은 면도기의 코드 블록 안에 이미 있으므로 for 키워드 앞에 @이 필요하지 않습니다.

@if ((Model.doaFormGroupDocuments.Count != 0) || (Model.doaFormGroupDocuments != null)) 
{ 
    for(var i = 0; i < Model.doaFormGroupDocuments.Count; i++) 
    { 
     @Html.HiddenFor(model => model.doaFormGroupDocuments[i].Checked) 
     @Html.HiddenFor(model => model.doaFormGroupDocuments[i].Id) 
     @Html.HiddenFor(model => model.doaFormGroupDocuments[i].Name) 
    } 
} 

이 질문을 참조

Unexpected "foreach" keyword after "@" character