如何从模型类创建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的情况下直接填充模型吗?
还需要模型、控制器和视图的代码。
您的模型实际上需要是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; }
}