Razor单个语句和块之间的区别

时间:2013-09-19 15:43:47

标签: asp.net-mvc razor

为什么第一个分段有效,第二个分支在标签标记处出现“无效的表达式术语'<”错误?

第一段:

@foreach( var f in new List<List<string>>{ new List<string>{ new List<string>{ "PumpSize", "Pump Size" },
new List<string>{ "PumpType", "Pump Type" }, 
new List<string>{ "WellHead", "Well Head" } } )
{
    <label>@f[1]
    </label>
}

第二部分:

@{
    var fields = new List<List<string>>{ new List<string>{ new List<string>{ "PumpSize", "Pump Size" },
        new List<string>{ "PumpType", "Pump Type" }, 
        new List<string>{ "WellHead", "Well Head" } };
    fields.ForEach( f => 
    {
        <label>@f[1]</label>
    } );
}

我得到的错误是<label>,“无效的表达式术语'<'。

如果重要,我的浏览器是IE9。

1 个答案:

答案 0 :(得分:1)

问题是ForEach是一个接受lambda表达式的方法,因此,您无法在此范围内传递View(或一段html)代码。我建议你使用一个简单的foreach循环。

@foreach(var field in fields) {
   <label>@field[1]</label>
}

如果您在使用此方法时遇到问题,也可以使用<text> razor标记。

@{

  foreach(var field in fields) {
    <text> 
       <label>@field[1]</label>
    </text>
  }

}