2014-11-21 62 views
2

我有一個很難理解爲什麼這是行不通的:for循環中,如果塊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) 
    } 
} 

我收到@下一個紅色的錯誤線旁的for循環。這是不允許在HTML中?

+3

旁註:你可能會遇到一個錯誤,'.Count'將不可用,如果'doaFormGroupDocuments == null',所以秩序if語句中的比較應該與此相反(並且它應該是'&&'not'||'):'if((Model.doaFormGroupDocuments!= null)&&(Model.doaFormGroupDocuments.Count!= 0) – entropic 2014-11-21 15:07:30

+0

[@「字符後面的[Unexpected」foreach「關鍵字]的可能的重複(http://stackoverflow.com/questions/4946334/unexpected-foreach-keyword-after-character) – 2014-11-21 15:16:05

回答

3

John,這看起來像ASP.NET MVC,我會假設是這樣的。

會發生什麼事是你有兩個背景,HTML和剃鬚刀,你有一個@它切換到剃刀方面的任何時候,當你有一個HTML標籤,<text>@:它切換HTML內容。

Visual Studio抱怨,因爲你在剃刀上下文(從你的if語句),並試圖再次進入剃刀上下文與@for,你只需要在for循環之前刪除@。另外值得注意的是,for循環中的三個helper調用將被正確處理,因爲它知道你正在返回IHtmlStrings。

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