@:在标记之间的foreach循环中不起作用?

时间:2018-11-02 16:46:10

标签: asp.net-mvc

我知道@:用于output a single line of content containing plain text or unmatched HTML tags

如果是这样,为什么我会得到以下错误:

“:”在代码块的开头无效。仅标识符,关键字,注释,“(”和“ {”有效。

  @foreach (int line in new int[] { 0, 1 })
    {
        <span>
          @: aaaaa
        </span>
    }

尽管运行符合预期:

@foreach (int line in new int[] { 0, 1 })
{
      @: aaaaa
}

1 个答案:

答案 0 :(得分:2)

@:用于在代码块内混合文本。

在C#代码块中使用span标记或任何其他html元素时,您已经在混合HTML标记,并且razor可以正确解析并执行它。在HTML元素(非代码块)中使用@:时,它甚至无效。

简而言之,您可以使用代码块内的HTML元素作为包装器来混合纯文本/ html。

@foreach (int line in new int[] { 0, 1 })
{
    <div>Hello</div>
}

在剃须刀中,在代码块中混合纯文本时,@:标签产生的结果与text标签相同。下面的结果也将与您的第二个代码块产生相同的结果。

@foreach (int line in new int[] { 0, 1 })
{
    <text>aaa533</text>
}