2014-10-30 42 views
0

我是新來的ASP.net和MVC 5.如何在MVC中縮進字符串5查看

我使用asp.net教程創建了一個測試項目。

我想縮進基於另一列的表中的文本。

所以,我有表,看起來如下

Title, Level. 
A  1 
B  2 
c  2 
D  3 
E  1 

根據水平我想在上面MVC視圖下面由前面添加標籤顯示。

A 
    B 
    C 
    D 
E 

所有我所得到的是

A 
B 
C 
D    

我不知道如何添加標籤。以下是我的代碼

@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.Label(item.Title)    
    </td> 
</tr> 
} 

謝謝。

回答

1

創建的推移遞歸深函數

@helper TreeView(List<Items> items, int level) 
{ 
    foreach (var item in items.Where(i=>i.level == level)) 
    { 
    <li> 
     <span>@item.Title</span> 
     <ul> 
      @TreeView(items, level+1) 
     </ul> 
    </li> 
    } 
} 

不是在視圖中添加

<ul> 
    @TreeView(Model, 1) 
</ul> 

並設置列表樣式爲無去除子彈

ul 
{ 
    list-style-type: none; 
} 
+0

謝謝你。抱歉不知道在哪裏添加功能。但是,如果我將上面的代碼放在視圖的頂部,就不會出現像名稱空間名稱「項目」無法找到的錯誤,並且item,int,bool也沒有一個參數。但是,有沒有一種簡單的方法來添加製表符?一些tike 3 * Tab意味着添加三個選項卡。 – ary 2014-10-30 20:15:50

+0

是的,你需要放在標記的頂部..谷歌如何添加輔助方法...一些細節在這裏http://www.asp.net/web-pages/overview/ui,-layouts,-and-主題/創建和使用一個幫手在一個aspnet-web-pages-site – 2014-10-30 20:20:13

+0

關於項目,你需要把你的類,上面的類是僞代碼,你需要把你的類而不是 – 2014-10-30 20:20:36

2

除ArsenMkrt出色的答案,你可以用動態填充來做到這一點:

@foreach (var item in Model) { 
    <tr> 
     <td style="padding-left: @((item.Index-1)*10)px;"> 
      @Html.Label(item.Title)    
     </td> 
    </tr> 
} 

這將產生像這樣

<table border=1> 
 
    <tr> 
 
    <td style="padding-left: 0px;">A</td> 
 
    </tr> 
 
    <tr> 
 
    <td style="padding-left: 20px;">B</td> 
 
    </tr> 
 
    <tr> 
 
    <td style="padding-left: 20px;">C</td> 
 
    </tr> 
 
    <tr> 
 
    <td style="padding-left: 40px;">D</td> 
 
    </tr> 
 
    <tr> 
 
    <td style="padding-left: 0px;">E</td> 
 
    </tr> 
 
</table>

+0

謝謝大衛。我真的很感激。 – ary 2014-10-31 04:27:09

相關問題