如何从模型类创建html表

时间:2013-07-25 11:42:42

标签: c# asp.net .net asp.net-mvc

我是MVC新手并学习MVC。现在我不想使用任何网格扩展,而是想通过HTML表生成表格UI。所以我正在寻找代码并找到了提示。

此代码不是完整代码。这就是我得到的。

<% if (Model.Count() > 0)
{ %>
    <table width="35%">
 <thead><tr><th>Species</th><th>Length</th></tr></thead>
  <%  foreach (var item in Model)
    { %>
     <tr>
         <td><%= item.FishSpecies%></td>
         <td align="center"><%=item.Length%></td>
     </tr>

 <% } %>
    </table>
<% }
else
{ %>
No fish collected.
<%} %>

问题是我无法可视化模型类的外观以及它是如何从控制器中填充的。 Viewbag不在代码中使用,而是直接从模型类生成表。

所以有人可以为我创建一个小的完整代码,只是为了创建一个HTML表并直接填充模型而不使用viewbag吗?

也需要模型,控制器和视图的代码。

2 个答案:

答案 0 :(得分:1)

您的模型实际上需要是IEnumerable<Model>。所以你可能有一个模型:

public class Model
{
    public string FishSpecies { get; set; }
    public int Length { get; set; }

    public static IEnumerable<Model> Load() { ... }
}

然后在你的控制器的行动中:

var list = Model.Load();
return View(list);

然后在视图中,您需要在最顶层定义模型:

@model System.Collections.IEnumerable<My.Namespace.Model>

现在,这两行不起作用:

<td><%= item.FishSpecies%></td>
<td align="center"><%=item.Length%></td>

他们需要更像这样的东西:

<td>@Html.DisplayFor(m => item.FishSpecies)</td>
<td>@Html.DisplayFor(m => item.Length)</td>

答案 1 :(得分:0)

如果您要遍历模型并创建表格,首先要更改视图的@model,如下所示:

@model IEnumerable<myPrj.Models.EntityName>

然后,您应该更改操作方法以向视图提供模型项:

public ActionResult Index()
{            
    return View(db.EntityNames.ToList());
}

最后,迭代你的模型并创建你的表:

<table id="tblNews">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Property1)
    </th>

    // ...

    <th>
        @Html.DisplayNameFor(model => model.Propertyn)
    </th>        
</tr>

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Property1)
    </td>

    // ... 

    <td>
        @Html.DisplayFor(modelItem => item.Propertyn)
    </td>        
</tr>
}
</table>

关于模特?模型只不过是一个具有某些属性的类:

public class MyModel
{
    [Display(Name = "Property 1")]
    [Required(ErrorMessage = "Property cannot be empty")]
    public int Property1 { get; set; }

    // ...

    [Display(Name = "Property n")]
    [Required(ErrorMessage = "Property cannot be empty")]
    public string Propertyn { get; set; }        
}