2013-03-20 62 views
0

我是剃鬚刀新手,面臨問題。我嘗試了一些我發現的解決方案,但他們都沒有工作。如何在其他循環中關閉表格標籤

下面給出的是我想在局部視圖中實現的代碼片段。我打開<table>,但想要在if循環中有條件地關閉它,如圖所示。

從中得到結果的方法,它在我的模型中填充list屬性,然後在部分視圖中返回模型。

首先我檢查Type是否爲「H」,那麼表格標籤應該打開並且整個具有類型「H」的行將被標識爲標題。如果輸入下一個條目中的「D」表示數據以「H」類型出現。如果細節中的下一個元素的類型也是「H」,則關閉表格標籤。因此,從第一次識別「H」直到下一個識別的「H」表格應該存在,並且對於下一個「H」類型應該開始新的表格。

@if (Model.Details.Count() > 0) 
{ 
    for (int count = 0; count < Model.Details.Count; count++) 
    { 
     //for heading 
     if (Model.Details[count].Type == "H") 
     { 
      <table> 
       <thead> 
        <tr> 
         @if (Model.Details[count].Column1 != null) 
         { 
          <th> 
           @Model.Details[count].Column1.ToString(); 
          </th> 
         } 
         @if (Model.Details[count].Column2 != null) 
         { 
          <th> 
           @Model.Details[count].Column2.ToString(); 
          </th> 
         } 
         @if (Model.Details[count].Column3 != null) 
         { 
          <th> 
           @Model.Details[count].Column3.ToString(); 
          </th> 
         } 
        </tr> 
       </thead> 
       @if (count < Model.Details.Count) 
       { 
        if (Model.Details[count + 1].Type == "H") 
        { 
         </table> 
        } 
       } 
     } 
     //for data under each heading 
     @if (Model.Details[count].Type == "D") 
     { 
      <tr> 
       @if (Model.Details[count].Column1 != null) 
       { 
        <td> 
         @Model.Details[count].Column1.ToString(); 
        </td> 
       } 
       @if (Model.Details[count].Column2 != null) 
       { 
        <td> 
         @Model.Details[count].Column2.ToString(); 
        </td> 
       } 
       @if (Model.Details[count].Column3 != null) 
       { 
        <td> 
         @Model.Details[count].Column3.ToString(); 
        </td> 
       } 
      </tr> 
     } 
    } 
} 

在開口表標記錯誤說

「的‘表’元素未封閉,所有元件必須是 自閉合的或具有匹配的結束標記」。

並在該標籤的收盤錯誤說

「遇到結束標記‘表’,沒有匹配的開始 標籤。是你的開始/結束標記適當的平衡?」

我想在if條件下關閉``標籤。我怎樣才能做到這一點?請幫助..

回答

1

你爲什麼不表標籤移動到你的剃鬚刀代碼

<table> 
@if (Model.Details.Count() > 0) 
     { 
      for (int count = 0; count < Model.Details.Count; count++) 
      { 
      if (Model.Details[count].Type == "H") 
       { 
         <thead> 
          <tr> 
           @if (Model.Details[count].Column1 != null) 
           { 
            <th> 
             @Model.Details[count].Column1.ToString(); 
            </th> 
           } 
           @if (Model.RetriveImpactDetails[count].Column2 != null) 
           { 
            <th> 
             @Model.Details[count].Column2.ToString(); 
            </th> 
           } 
           @if (Model.Details[count].Column3 != null) 
           { 
            <th> 
             @Model.Details[count].Column3.ToString(); 
            </th> 
           } 
          </tr> 
         </thead> 
       } 
      } 
     } 
</table> 

外面這將刪除需要檢查它是否是你的模型(不需要的最後一次迭代動態關閉桌子)。這意味着如果Count的值是0,則表格標籤仍然被寫入(並關閉),這可能是理想的,也可能不是理想的。

+0

感謝戴夫的快速回復。 我想通過將標籤放在if循環中來對數據做更多的操作。 有沒有辦法可以做到這一點? 你想看看整個代碼? – mailmehere 2013-03-20 13:19:59

+0

我更新了我問的問題。 – mailmehere 2013-03-20 13:38:33

+0

@mailmehere你的方法可能會給你一個封閉的表格標籤,然後你的代碼打開TR標籤!你有多少行標題? – Dave 2013-03-20 13:41:16