J'essaie de transmettre des données en utilisant ViewBag.Unions. Je reçois des données au contrôleur, mais quand je foreach loop dans la vue, il dit «objet» ne contient pas une définition de «CountryName». Je donne le code complet du contrôleur et de la vue. Je ne peux pas résoudre ce problème.'objet' ne contient pas de définition pour 'CountryName'
Contrôleur
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();
}
Voir
@{
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>
Votre réponse est correcte. Mais je veux utiliser l'objet anonyme dans ViewBag pour passer le contrôleur de données à voir. –
Oui, vous pouvez utiliser le sac de vue pour transmettre les données (identique à ce que vous avez fait dans votre message d'origine). Vous devez diffuser l'élément de dictionnaire ViewBag dans la liste de MyViewModel et cela vous donnera l'intellisense pour ces noms de propriété. – Shyju