使用强类型模型在MVC4中创建HTML表

时间:2012-05-22 15:08:47

标签: asp.net-mvc-4 html-table

我正在尝试使用从数据库中提取的数据创建一个HTML表格...

这是我的模特......

public class PopulationModels
{
    public List<PopulationModel> Populations { set; get; }
}

这只是......的列表

public class PopulationModel
{
    public string populationID { set; get; }

    public string PopName { set; get; }

    public string Description { set; get; }

    public string PopulationType { set; get; }

    public Boolean isActive { set; get; }

    //public List<XSLTACOData> patients { set; get; }
}

我将此模型传递给我的视图......

IEnumerable<PopulationModels> PopModel = DataRepo.Get(userName);
return View(PopModel);

我尝试以下列方式显示一个列表......

@foreach (var item in Model) {
<tr>
    <td class="rowControl hidden">
        @*<a href="#makeRowEditable" class="makeRowEditable">Edit</a>*@ |
        @*<a href="#deleteRow" class="deleteRow">Delete</a>*@
        @Html.DispalyFor(modelItem => item.Populations)
    </td>
</tr>
}

但是我很难弄清楚如何访问模型的各个元素......

例如

@Html.DispalyFor(modelItem => item.Populations)

上面的代码行,我想采取每个单独的populationModel并为每个字段映射一列...但我似乎无法访问各个人群......我在这里错过了一个合乎逻辑的步骤(我显然是,但是哪一步?)

更新:添加更多视图:我现在正在制作一张桌子,但我这样做的方式似乎反直觉......

这是我的模特......

 @model IEnumerable<FocusedReadMissionsRedux.Models.PopulationModels>

以下是我创建表格的方法(我正在计划使用jqGrid的tableToGrid功能,只要我能够获得一种可靠的方式来访问我的数据......

<table border="2">
<thead>
  <tr>
  <th>
    Population Name
  </th>
   <th>
    Population Description
  </th>
  </tr>
</thead>
@foreach(var item in Model){
foreach (var pop in item.Populations)
{
<tr>
    <td class="rowControl hidden">
        @Html.DisplayFor(modelItem => pop.PopName)
        @Html.ActionLink(pop.PopName,"","")
    </td>
    <td>
        @Html.DisplayFor(modelItem => pop.Description)
        @Html.Display(pop.Description)
    </td>
</tr>
}

}  

2 个答案:

答案 0 :(得分:1)

由于您没有发布视图的完整代码:您应该在视图中定义要绑定的对象类型,如下所示:

@model IEnumerable<PopulationModels>

然后你可以用foreach循环遍历它并使用:

绑定到当前项目
@Html.DisplayFor(x => x.Popname)

答案 1 :(得分:0)

首先..一个好的命名约定是重命名

PopulationModels

PopulationList

这可以让其他程序员深入了解模型的目的。

带上你的模特:

@model Models.PopulationList

然后,我们可以使用foreach或for循环遍历模型列表:

<table>
    <thead>
        <tr>
            <th>Population Name</th>
            <th>Population Description</th>
        </tr>
    </thead>
    <tbody>
    @foreach(Population pop in PopulationList)
    {
       <tr>
          <td>@Html.DisplayFor(model => pop.PopName)</td>
          <td>@Html.DisplayFor(model => pop.PopDesc)</td>
       </tr>
    }
    </tbody>
 </table>

您只需要一个foreach循环,因为您正在模型列表中迭代模型。

我希望这有助于将来参考!