在MVC视图中列出人口

时间:2014-08-07 09:32:46

标签: asp.net-mvc

这是我的Model班级:

 public class TechnicalCommitteeDetails
    {
 public List<String> Documents { get; set; }
        public List<String> Sites { get; set; }
        public List<String> Testing_Facility { get; set; }
}

这是我的Controller班级:

 public ActionResult TechnicalCommitteeDetails()
        {
 tcd.Documents.Add("Product Bullitiens");
            tcd.Documents.Add("MSD");
            tcd.Documents.Add("Technical Literature");
            tcd.Sites.Add("Pennsylvania");  
            tcd.Sites.Add("New York");
            tcd.Testing_Facility.Add("TEC Service");
            tcd.Testing_Facility.Add("Amercian Engineering Testing");

}

这是我的View

@Html.DisplayFor(model => Model.Documents, new { @class = "col-xs-6 no-padding" })

这给我这样的输出: enter image description here

我希望每个Documnet看起来都在单独的行中,如下所示:

 Documents: Product Bullitiens
            MSD
            Technical Literature

2 个答案:

答案 0 :(得分:0)

您可以手动呈现列表,而不是使用@Html.DisplayFor()。 例如:

<ul>
@foreach(var item in Model.Documents)
{
    <li>
        item
    </li>

}
</ul>

只需按照您想要的方式设置列表样式。

答案 1 :(得分:0)

您的媒体资源DocumentsList<string>,默认情况下会按照您在项目中看到的情况进行渲染。

一种选择是创建自定义 DisplayTemplate 以显示字符串列表。

为此,您需要在视图文件夹下的共享文件夹中创建一个名为 DisplayTemplates 的新文件夹。意见&gt;分享&gt; DisplayTemplates然后在其中创建一个名为 _Items.cshtml

的新PartialView

enter image description here

在这个新的PartialView中,输入代码;

@model List<String>

<ul>
    @foreach (var s in Model)
    {
        <li>@s</li>
    }
</ul>

然后将您的@Html.DisplayFor代码更新为

@Html.DisplayFor(model => model.Documents, "_items")

然后,这将您的文档呈现为无序列表。从这里开始,您可以使用布局以及HTML标记的显示方式来显示文档。

通过使用此方法,您创建了一个可重复使用的DisplayFor模板,用于显示字符串列表。然后,您可以使用此方法显示其他类型的属性,例如List<TechnicalCommitteeDetails>可以显示委员会详细信息列表,显示文档列表。