0
我想動態設置使用KendoGrid內容模板和內聯剃刀的單元格的內容,但我得到各種錯誤。Razor嵌入代碼生成編譯器錯誤
"<table><tr>" +
"<td style='color:yellow; width:200px;height:13px;padding-top:0px; margin-top:0px;text-align:center;' class='audiogrid'>" +
@{
@if ((int)TempData["MediaTypeId"] == 1) {
@"<audio id='a1' src='#: MediaLocation #' controls='controls' preload='auto' autobuffer><embed height='26' autostart = 'false' type = 'audio/mpeg' width='290' src='#: MediaLocation #'></audio>" +
}
else{
@" #: Description # " +
}
}
"</td>" +
"</tr></table>"
上面的代碼引發一個錯誤:CS1646:關鍵字,識別符或字符串預期逐字說明符後:在@ @符號的第一個實例。
我不明白爲什麼或這個錯誤的含義。根據在MVC4中使用Razor的規則,我的語法應該可以工作。做了一些研究,以確保發現的語法是準確here 但我嘗試了變化,其中包括一個字符串後,@作爲錯誤建議,並且我想應該工作以及:
"<table><tr>" +
"<td style='color:yellow; width:200px;height:13px;padding-top:0px; margin-top:0px;text-align:center;' class='audiogrid'>" +
@if ((int)TempData["MediaTypeId"] == 1) {
@"<audio id='a1' src='#: MediaLocation #' controls='controls' preload='auto' autobuffer><embed height='26' autostart = 'false' type = 'audio/mpeg' width='290' src='#: MediaLocation #'></audio>" +
}
else{
@" #: Description # " +
}
"</td>" +
"</tr></table>"
這一次我收到編譯器錯誤消息:CS1026:)預計在@代碼中出現的第一行。
我也嘗試了一些其他的變化,但沒有一個似乎工作。 我在做什麼錯或在這裏失蹤? :-(
基本上在細胞內控制應該改變基於媒體類型。
謝謝Gyter的啓示。代碼塊中的@是我試圖確定錯誤意味着什麼的徒勞嘗試。我根據您的建議修改了我的代碼,不再收到其他任何錯誤,但現在正在收到「解析器錯誤消息:內聯標記塊(@
內容
)不能嵌套,只允許一級內聯標記。在else塊中使用@:任何想法是什麼意思?我理解你的使用說明,但錯誤對我沒有意義 – Mark看看這裏:http://www.aspnetwiki.com/telerik-mvc:nested-container-controls-and-razor-helper看起來像你的嵌套標籤如。 –
GvS
如果我不是很明顯。但我一定會嘗試在您的鏈接中提供的替代方法。謝謝。 – Mark