如何从模型类创建html表

本文关键字:创建 html 模型 | 更新日期: 2023-09-27 18:25:04

我是MVC和学习MVC的新手。现在我不想使用任何网格扩展,而是只想通过HTML表生成表格用户界面。所以我在寻找代码,发现了一个提示。

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

<% 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的情况下直接填充模型吗?

还需要模型、控制器和视图的代码。

如何从模型类创建html表

您的模型实际上需要是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>

如果你想迭代你的模型并创建你的表,首先改变你的视图的@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; }        
}