Asp.net mvc ASP.NET剃须刀引擎似乎延迟
我的视图只包含以下内容:Asp.net mvc ASP.NET剃须刀引擎似乎延迟,asp.net-mvc,razor,Asp.net Mvc,Razor,我的视图只包含以下内容: <table> @for (int i = 0; i < 10; i++) { if (i % 5 == 0) { <tr> } <td> Hello </td> if (i % 5 == 0) { </tr&g
<table>
@for (int i = 0; i < 10; i++)
{
if (i % 5 == 0)
{
<tr>
}
<td>
Hello
</td>
if (i % 5 == 0)
{
</tr>
}
}
</table>
<table>
<tr>
}
<td>
Hello
</td>
if (i % 5 == 0)
{
</tr>
<tr>
}
<td>
Hello
</td>
if (i % 5 == 0)
{
</tr>
</table>
<table>
@for (int i = 0; i < 10; i++)
{
if (i % 5 == 0)
{
@:<tr>
}
@:<td>
@:Hello
@:</td>
if ((i + 1) % 5 == 0)
{
@:</tr>
}
}
</table>
我打算制作的是以下内容
<table>
<tr>
<td>Hello</td>
<td>Hello</td>
<td>Hello</td>
<td>Hello</td>
<td>Hello</td>
</tr>
<tr>
<td>Hello</td>
<td>Hello</td>
<td>Hello</td>
<td>Hello</td>
<td>Hello</td>
</tr>
</table>
但它却产生了以下结果:
<table>
@for (int i = 0; i < 10; i++)
{
if (i % 5 == 0)
{
<tr>
}
<td>
Hello
</td>
if (i % 5 == 0)
{
</tr>
}
}
</table>
<table>
<tr>
}
<td>
Hello
</td>
if (i % 5 == 0)
{
</tr>
<tr>
}
<td>
Hello
</td>
if (i % 5 == 0)
{
</tr>
</table>
<table>
@for (int i = 0; i < 10; i++)
{
if (i % 5 == 0)
{
@:<tr>
}
@:<td>
@:Hello
@:</td>
if ((i + 1) % 5 == 0)
{
@:</tr>
}
}
</table>
有什么问题吗?如果要在页面上显示的HTML在代码块中,则必须在其前面加@:前缀
<table>
@for (int i = 0; i < 10; i++)
{
if (i % 5 == 0)
{
@:<tr>
}
@:<td>
@:Hello
@:</td>
if (i % 5 == 0)
{
@:</tr>
}
}
</table>
要产生所需的输出,您实际上需要以下内容:
<table>
@for (int i = 0; i < 10; i++)
{
if (i % 5 == 0)
{
<tr>
}
<td>
Hello
</td>
if (i % 5 == 0)
{
</tr>
}
}
</table>
<table>
<tr>
}
<td>
Hello
</td>
if (i % 5 == 0)
{
</tr>
<tr>
}
<td>
Hello
</td>
if (i % 5 == 0)
{
</tr>
</table>
<table>
@for (int i = 0; i < 10; i++)
{
if (i % 5 == 0)
{
@:<tr>
}
@:<td>
@:Hello
@:</td>
if ((i + 1) % 5 == 0)
{
@:</tr>
}
}
</table>
请注意对第二个if语句的更改。或者,也可以使用嵌套for循环生成相同的结果
<table>
@for (int i = 0; i < 2; i++)
{
<tr>
@for (int j = 0; j < 5; j++)
{
<td>Hello</td>
}
</tr>
}
</table>
您的代码块应该跨多行,因此应该在@
@{
for (int i = 0; i < 10; i++)
{
Blah blah...
}
}
尝试将html标记包装到文本元素中,如下所示: