【发布时间】:2011-11-07 17:51:52
【问题描述】:
我有一个非常烦人的问题,我有一个看法:
@{
if(ViewBag.Section == "Home")
{
<div id="headerfrontPage">
}
else
{
<div id="header">
}
}
我得到一个编译错误:
代码块缺少结束“}”字符。确保你有 此块中所有“{”字符的匹配“}”字符, 并且没有“}”字符被解释为标记。
如何有条件地写一个 div?它基本上是为了破解......
【问题讨论】:
-
Razor 解析器在代码和 html 之间的转换方面非常严格。因为它完全理解你必须通过转换到 html 而不关闭你的块来正确打开/关闭你的元素告诉解析器你仍然在 html 中,所以它忽略了}。做你想做的最干净的方法是
@:,它只会把你开始它的那行变成一个html转换。<text></text>不太清楚,我不会推荐它。 -
我同意 BuildStarted 和 Andrew Barber 的回答,但我要另外说明,我建议单独计算类名并将其存储在像“headerClass”这样的变量中,然后只写.这是一个非常烦人的问题,似乎没有任何方法可以告诉 Razor“已经关闭该死的块”。如果您只有 1 或 2 行要转义,那么这个问题的答案很好,但我有 15/20 行,我不想全部转义!
标签: c# asp.net-mvc-3 razor