我正在開發一個asp.net mvc 3應用程序。我使用Razor來表達我的觀點。星期五我遇到了這個問題,並認爲我已經修復了它,但現在我發現這只是某些私人事件,因爲某些原因,這些事情都是有效的。我的C#代碼的右花括號在剃刀局部視圖中無法識別
我有四列的表,但每一行可能有不同數量的字段在一個小區中,所以我工作的一些排序算法,這將填補我的細胞屬於他們所有的信息。這是我現在有:
@{
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].FieldValue;
如何我有我將永遠有一個開口<td>
標籤在該行的開頭,並在關閉</td>
標籤行的末尾。我也有算法問題,但在解決問題之前,我無法繼續使用未識別的閉環。那麼,什麼是錯誤 - 當我嘗試和調試模式運行這個代碼,我得到這個錯誤:
在foreach塊缺少結束「}」字符。確保你 有一個匹配的「}」字符這個 塊內所有的「{」字符,並且沒有「}」字符被解釋爲 標記。
但是當我轉到代碼本身時,我得到了與if
塊和for
塊相同的錯誤。我認爲插入HTML <td>
和</td>
標籤使用這種語法 - @:
將保持我的C#代碼的結構,只是在我想要的地方添加標籤,但從我認爲至少有一個<td>
或</td>
或</td>
標籤被解釋爲所有後面的內容都被識別爲HTML標記而不是C#代碼。那麼在C#方法中插入HTML標記的正確方法是什麼,或者如果錯誤是由其他東西引起的 - 它會是什麼?
P.S
關於算法的任何幫助將不勝感激,雖然它不是這個問題的話題。
謝謝。我發現它很難,但這確實是問題。 – Leron 2013-05-13 07:39:15
@majorByte - 你能說出@的含義嗎? – 2013-05-13 07:57:18
@ewvfwrwwvw:'@:'用於混合代碼和非代碼/文本。例如'@if(true){output this text}'會拋出一個錯誤,因爲輸出不能作爲類型或名稱空間找到,因爲剃鬚刀認爲它是代碼而不是文本。 '@if(true){@:輸出這個文本}'告訴剃刀它正在處理文本而不是代碼。對於HTML標籤沒有必要雖然,因爲剃刀將它識別爲文本,即:'@if(真){輸出本文 }' –
2013-05-13 08:26:54