0
我试图使用ViewBag.Unions传递数据。我在控制器中获取数据,但是当我在视图中foreach循环时,它说'对象'不包含'CountryName'的定义。我从控制器和视图中提供完整的代码。我无法解决这个问题。'object'不包含'CountryName'的定义
控制器
public ActionResult Index()
{
List<Country> listCountry = _db.Countries.ToList();
ViewBag.Countries = listCountry;
ViewBag.Unions = (from unon in _db.Unions
join upz in _db.Upazilas on unon.UpazilaId equals upz.UpazilaId
join dic in _db.Districts on upz.DistrictId equals dic.DistrictId
join div in _db.Divisions on dic.DivisionId equals div.DivisionId
join con in _db.Countries on div.CountryId equals con.CountryId
select new
{
con.CountryName,
div.DivisionName,
dic.DistrictName,
upz.UpazilaName,
unon.UnionName
}).ToList();
return View();
}
查看
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<table class="">
<thead>
<tr>
<td>Country</td>
<td>Division</td>
<td>District</td>
<td>Upazila</td>
<td>Union</td>
</tr>
</thead>
<tbody>
@if (ViewBag.Unions != null)
{
foreach (var un in ViewBag.Unions)
{
<tr>
<td>@un.CountryName </td>
<td>@un.DivisionName</td>
<td>@un.DistrictName</td>
<td>@un.UpazilaName</td>
<td>@un.UnionName</td>
</tr>
}
}
</tbody>
</table>
你的答案是正确的。但我想在ViewBag中使用匿名对象来传递数据控制器来查看。 –
是的,你可以使用视图袋来传递数据(与你在原来的职位做了什么)。你需要转换ViewBag字典项列出MyViewModel的,这将让你的智能感知的那些属性名称。 – Shyju