我是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吗?
也需要模型,控制器和视图的代码。
答案 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; }
}