use*_*585 14 razor asp.net-mvc-4
我有以下MVC 4 Razor代码:
@for (int i = 1; i <= 100; i++) {
if (currentCol == 1) {
Html.Raw("<div class=row>");
@*Need to do this because can't have a open div within a if compiler doesnt like it *@
} if (currentCol == maxCol) {
Html.Raw("</div>");
}
currentCol++;
}
Run Code Online (Sandbox Code Playgroud)
我基本上尝试使用if语句的不同路径中的start和end标签有条件地生成每个div类行的内容.当我只使用直接HTML时,编译器不喜欢它并认为括号是关闭的.这似乎Html.Raw是我在线搜索的解决方案,但是当我使用时Html.Raw,当我查看源代码时,div不显示.
有谁知道发生了什么?
Dar*_*rov 33
尝试Html.Raw使用@以下内容为呼叫加前缀
@for (int i = 1; i <= 100; i++)
{
if (currentCol == 1)
{
@Html.Raw("<div class=row>");
}
if (currentCol == maxCol)
{
@Html.Raw("</div>");
}
currentCol++;
}
Run Code Online (Sandbox Code Playgroud)
Bra*_*tie 11
Razor遵循HTML和C#/ VB语法块,这就是分解标签的原因.两种解决方法:
1:使用Html.Raw(如你所做)
if (condition){
@Html.Raw(@"<div class=""row"">")
}else{
@Html.Raw("</div>")
}
Run Code Online (Sandbox Code Playgroud)
2:使用特殊<text>...</text>标签.
if (condition){
<text>
<div class="row">
</text>
}else{
<text>
</div>
</text>
}
Run Code Online (Sandbox Code Playgroud)
请记住,@Razor解析器的符号意味着您正在从一种语言转换到另一种语言(尽管是HTML代码,反之亦然).所以,既然你是一个if(...)块并且Html.Raw实际上正在输出HTML,你需要使用@.
小智 6
您还可以使用:
if(condition){
@:<div>
}
if(condition){
@:</div>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17772 次 |
| 最近记录: |