Razor .NET无法识别代码脚本

时间:2012-02-21 23:25:02

标签: asp.net-mvc razor

我在视图中有以下代码。在for语句中,我想对父div中的每4个项目进行分组。 If(counter == 0),我渲染父div,然后我渲染四个项目,如果它是4个项目组中的最后一个,我关闭父div

但是,看起来razor希望我关闭第一个div中的父if。似乎Razor不够聪明,如果下面的某些行知道父关闭标记在第二个内部,或者我可能遗漏了一些东西。有什么想解决这个问题吗?

 @{int counter = 0; }
 @for (int i = 0; i < Model.UserManagedRoles.Count; i++){
      string roleName = Model.UserManagedRoles[i].Name.Replace(" ", "").Trim();
      string id = string.Format("chk{0}", roleName);

      if (counter == 0)
      {
           <div  class="rowCapture divUserRoles">
      }

      <div class="hzStackSmall">
      <input type="checkbox" id="@id" name="@id" value="@roleName" />@Model.UserManagedRoles[i].Name</div>

      if(counter == 3 || i == Model.UserManagedRoles.Count) {
           </div>
      }

      counter++;
      if (counter == 4)
      {
           counter = 0;
      }
 }

1 个答案:

答案 0 :(得分:3)

您必须使用@: <div class="hzStackSmall">使用剃刀引擎打印HTML代码。这会有帮助吗?

我强烈推荐ScottGu博客关于剃须刀引擎的this教程。

 @{int counter = 0; }

 @for (int i = 0; i < Model.UserManagedRoles.Count; i++)
 {
    string roleName = Model.UserManagedRoles[i].Name.Replace(" ", "").Trim();
    string id = string.Format("chk{0}", roleName);

    if (counter == 0)
    {
       @:<div  class="rowCapture divUserRoles">
    }

    @:<div class="hzStackSmall">
    @:<input type="checkbox" id="@id" name="@id" value="@roleName" />@Model.UserManagedRoles[i].Name</div>

    if(counter == 3 || i == Model.UserManagedRoles.Count) {
       @:</div>
    }

    counter++;
    if (counter == 4)
    {
       counter = 0;
    }
 }