我正在尝试在一个视图中添加来自两个不同表的数据。这里的somne代码: 视图模型代码
public class ProductIndexData
{
public IEnumerable<Order> Orders { get; set; }
public IEnumerable<Magnet> Magnets { get; set; }
public IEnumerable<Map> Maps { get; set; }
public IEnumerable<Portrait> Portraits { get; set; }
public IEnumerable<Tablet> Tablets { get; set; }
public IEnumerable<Other> Others { get; set; }
}
控制器代码:
public ActionResult Index()
{
ProductIndexData products = new ProductIndexData();
products.Magnets = (from o in db.Magnets select o).ToList();
return View(products);
}
观点:
@model List<SvLaserIS.ProductIndexData>
@{
ViewBag.Title = "Product";
}
<h2>Product</h2>
<table>
@foreach (var item in Model) {
foreach(SvLaserIS.Models.Magnet magnet in item) {
<tr>
<td>
@Html.DisplayFor(modelItem => magnet.Count)
</td>
<td>
@Html.DisplayFor(modelItem => magnet.Model)
</td>
<td>
@Html.DisplayFor(modelItem => magnet.Color)
</td>
<td>
@Html.DisplayFor(modelItem => magnet.FullPrice)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { }) |
@Html.ActionLink("Details", "Details", new { }) |
@Html.ActionLink("Delete", "Delete", new { })
</td>
</tr>
}
}
</table>
编译后我在第二个foreach循环中遇到错误,因为它表示它不包含GetEnumerator的定义。寻求帮助:/
答案 0 :(得分:4)
好像你只是忘了指定要迭代item.Magnets
属性:
foreach(SvLaserIS.Models.Magnet magnet in item.Magnets)
答案 1 :(得分:0)
我解决了。只需在视图中传递单个对象,并为视图中的每个表使用单个foreach循环。谢谢大家的回应。
答案 2 :(得分:0)
In model
--------
simple example
public class subdomain
{
public string Function { get; set; }
public string SubDomain { get; set; }
public string URL { get; set; }
public Guid DomainId { get; set; }
}
public class emailserver
{
public string Priority { get; set; }
public string MailExchanger { get; set; }
public Guid DomainId { get; set; }
}
public class tablevalues
{
public List<emailserver> emailserver { get; set; }
public List<subdomain> subdomain { get; set; }
}
in controller
-------------
tablevalues dto=new tablevalues();
dto.subdomain=from p in context.tablename1 select p
dto.emailserver=from q in context.tablename2 select q
return View(dto);
in .cshtml
----------
@model MVCDropDownlist.Models.tablevalues
@{
Layout = null;
}
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="tbsub" style="visibility: @(Model.subdomain.Count==0? "hidden" : "visible") " >
<thead>
<tr>
<td colspan="3">
<h1>Web Settings</h1>
</td>
</tr>
<tr>
<th>Web Sub Domain</th>
<th>Function</th>
<th>Points To</th>
</tr>
</thead>
<tbody>
@if (Model != null && Model.subdomain.Count() > 0)
{
foreach (var item in Model.subdomain)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.SubDomain)
</td>
<td>@Html.DisplayFor(modelItem => item.Function)</td>
<td>@Html.DisplayFor(modelItem => item.URL)</td>
</tr>
}
}
</tbody>
</table>
<!--tableGrid -->
</div>
<!--rightSection -->
</div>
<div class="rightSection">
<div class="tableGrid">
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="tbess" style="visibility: @(Model.emailserver.Count==0? "hidden" : "visible") ">
<thead>
<tr>
<td colspan="2">
<h1>Email Server Settings</h1>
</td>
</tr>
<tr>
<th>Mail Exchanger</th>
<th>Priority</th>
</tr>
</thead>
<tbody>
@if (Model != null && Model.emailserver.Count() > 0)
{
foreach (var item in Model.emailserver)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.MailExchanger)
</td>
<td>@Html.DisplayFor(modelItem => item.Priority)</td>
</tr>
}
}
</tbody>
</table>