簡體   English   中英

Razor部分視圖中無法識別我的C#代碼的右花括號

[英]The closing braces of my C# code are not recognized in a Razor partial view

我正在開發一個asp.net mvc 3應用程序。 我使用Razor表示意見。 我在星期五遇到這個問題,並以為我已解決它,但是現在我看到這只是一個私人案例,由於某些原因,這些事情起作用了。

我有一個包含四列的表,但是每一行在一個單元格中可能具有不同數量的字段,因此我正在研究某種算法,該算法將用屬於它們的所有信息填充我的單元格。 這就是我現在所擁有的:

@{
    int tempColumn = 1;    
}

<tr>
@foreach (var field in Model)
{   
    if (field != null)
    {   
        <td>    
        @for (int i = 0; i < field.Count; i++)
        {
            if (field[i].ColumnNo == tempColumn)
            {
                @field[i].QuestionText;
                @field[i].FieldValue;
            }
            else if (field[i] != null)
            {
                tempColumn++;
                @:</td>
                @:<td>
                @field[i].QuestionText;
                @field[i].FieldValue;
            }
        }
    }
    @:</td>      
}
</tr>

基本上,這個想法是,無論@field[i].QuestionText;多少對@field[i].QuestionText; / @field[i].FieldValue; 我要在行的開頭始終有一個<td>標記,在行的末尾有一個</td>標記。 我的算法也有問題,但是在解決無法識別的閉合手環之前,我無法繼續。 那么錯誤是什么-當我嘗試在調試模式下運行此代碼時,出現此錯誤:

foreach塊缺少結束符“}”。 確保此塊中所有“ {”字符都有一個匹配的“}”字符,並且沒有“}”字符被解釋為標記。

但是,當我進入代碼本身時,會遇到關於if塊和for塊的相同錯誤。 我以為使用這種語法- @:插入HTML <td></td>標簽會保留我的C#代碼的結構,只是將標簽添加到我想要的位置,但是從我看來,似乎有些原因至少要解釋一個<td></td>標記,以便將其后的所有內容識別為HTML標記,而不是C#代碼。 那么在C#方法中插入HTML標記的正確方法是什么,或者如果錯誤是由其他原因引起的,那可能是什么呢?

聚苯乙烯

關於算法的任何幫助將不勝感激,盡管這不是此問題的主題。

更改

            }
        }
    }
    @:</td>      
}
</tr>

            }
        }
        </td>      
    }
}
</tr>

您可以在if (field != null)內開始<td> ,因此也應在其中結束,否則,如果field == null則將得到<tr></td></tr>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM