一、目标
在C# MVC开发模式下了解ViewData怎么讲一个List<Model>传到前台,并且前台怎么循环读取出数据
二、平台
vs2013, MVC模式
三、重要部分控制器代码展示
#region 5.PC详情页
public ActionResult PcDetail()
{
string pcUID = Request["id"].Trim();
if (pcUID!=null || pcUID !="")
{
//PC详情数据
PcBLL pcbll = new PcBLL();
PcModel pm = new PcModel();
pm = pcbll.getPcByUID(pcUID);
//PC配件<CPU>数据
List<PcPart> pp = new List<PcPart>();
pp= pcbll.getPcPartByPcID_class(pcUID);
ViewData["pcPart"] = pp;
return View(pm);
}
return Content("没有这样的数据");
}
#endregion
四、前端视图写法
@model System007_Entity.PcModel
@using System007_Entity
<!DOCTYPE html>
<html>
<head>
<title>PC列表页</title>
</head>
<body>
<!--省略掉了N多与本篇文章无关的代码-->
<div class="col-md-4">
<strong>保修期开始:</strong><em>@Model.repairStart</em>
</div>
<div class="col-md-4">
<strong>保修期结束:</strong><em>@Model.repairEnd</em>
</div>
<div class="col-md-4">
<strong>创建人:</strong><em>@Model.createPerson</em>
</div>
<div class="col-md-4">
<strong>创建时间:</strong><em>@Model.createTime</em>
</div>
<div class="col-md-4">
<strong>编辑时间:</strong><em>@Model.editTime</em>
</div>
<div class="col-md-4">
<strong>总备注:</strong><em>@Model.note</em>
</div>
<!--详情页加载结束-->
<div class="row">
</div>
<hr />
<h2>配件部分</h2>
<div class="col-md-12">
<table border="1">
<tr>
<th>配件类别</th>
<th>配件品牌</th>
<th>配件型号</th>
<th>配件规格</th>
<th>配件价格</th>
<th>保修期开始</th>
<th>保修期结束</th>
<th>修改日期</th>
<th>创建日期</th>
<th>配件备注</th>
</tr>
@{
var pcParts = ViewData["pcPart"] as List<PcPart>;
if (pcParts != null && pcParts.Any())
{
foreach (var item in pcParts)
{
<tr>
<td>@item.pcPartClass</td>
<td>@item.brand</td>
<td>@item.xModel</td>
<td>@item.specification</td>
<td>@item.price</td>
<td>@item.repairStart</td>
<td>@item.repairEnd</td>
<td>@item.editTime</td>
<td>@item.createTime</td>
<td>@item.Note</td>
</tr>
}
}
}
</table>
</body>
</html>
五、代码解析:
1.控制器中写个ViewData["pcPart"],用来装在List<Model>。
2.视图中先引用@using 引用实体类(仅引用实体类即可,无需引用具体对象名)
3.视图中html要展示数据区域写上@{},然后将控制台定义的ViewData转换成List<Model>以便循环。
如例子中:var pcParts = ViewData["pcPart"] as List<PcPart>; 就是将接收到的viewdata转换成一个listModel,便于我们用foreach循环。
实测有效。kahn 2019年7月2日16:55:06