Asp.net mvc 4 Razor内联代码生成编译器错误
我试图使用KendoGrid内容模板和内联Razor动态设置单元格的内容,但是我遇到了各种各样的错误Asp.net mvc 4 Razor内联代码生成编译器错误,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,我试图使用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"]
"<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>"
“”+
"" +
@{
@如果((int)TempData[“MediaTypeId”]==1){
@"
但我尝试了一种变体,按照错误提示,在@后面包含一个字符串,我认为也可以:
"<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>"
“”+
"" +
@如果((int)TempData[“MediaTypeId”]==1){
@"" +
}
否则{
@“#:描述#”+
}
"" +
""
这一次,我得到了编译器错误消息:CS1026:),应该在代码中第一次出现@的同一行
我也尝试过一些其他的变化,但它们似乎都不起作用。
我做错了什么或错过了什么-(
基本上,单元格中的控件应根据媒体类型进行更改。Razor不是某种字符串连接语法。您指定html标记和C代码,Razor引擎将它们写入客户端
在@{
块(或任何其他代码块)内,您可以使用C#语句。不需要额外的@
在@if
(或任何其他代码块)中,您可以使用html标记。无需在它们前面加@
在else
块中,使用@:
输出不带html标记的html
<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{
<text> #: Description # </text>
}
}
@{
如果((int)TempData[“MediaTypeId”]==1){
}
否则{
#:Description#
}
}
感谢GY的启发。代码块中的@是我试图确定错误含义的徒劳尝试。我根据您的建议修改了代码,不再收到任何其他错误,但现在收到“解析器错误消息:内联标记块(@内容))不能嵌套。只允许一级内联标记。“在else块中使用@:有什么想法吗?我理解您对其用法的解释,但在此处查看错误是没有意义的:看起来您的标签是嵌套的。如果我不是很明显。但我一定会尝试您链接中提供的替代方法。谢谢。”。