2014-10-30 41 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

相关问题