2012-02-21 42 views
2

我在我的視圖中有以下代碼。在for聲明中,我想將父項div中的每4項分組。 If(counter == 0),我渲染父母div,然後我渲染四個項目,然後如果它是4個項目組的最後一個,我關閉父項divRazor .NET不識別代碼腳本

但是,它看起來像剃鬚刀期待我關閉父母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; 
     } 
} 

回答

3

您必須使用@: <div class="hzStackSmall">才能使用剃鬚刀引擎打印HTML代碼。這會有幫助嗎?

我強烈建議this來自ScottGu的博客關於剃鬚刀引擎的教程。

@{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; 
    } 
} 
+0

感謝它的工作。 – 2012-02-21 23:29:27

+1

@tarkanboy,樂於幫助。你可以將我的回覆(或任何其他)標記爲答案嗎? – 2012-02-21 23:33:56

+1

@cacho - 這種情況經常發生。 – 2012-02-21 23:54:15