Lorsque j'essaie d'attribuer une valeur au ViewBag, j'obtiens l'erreur suivante:
Impossible d'appliquer l'indexation avec [] à une expression de type 'System.Dynamic.DynamicObject'
Mon code est le suivant:
public ActionResult Success()
{
ViewBag["SuccessBody"] = TempData["successBody"];
return View();
}
PS: Pourquoi je fais cela, vous pouvez demander? Parce que je redirige vers l'action Success et que j'avais besoin de quelque chose qui persiste à travers les redirections. Ensuite, j'attribue la valeur à ViewBag afin de passer la valeur à une vue "partagée".
As-tu essayé
ViewBag.SuccessBody = TempData["successBody"];
ViewBag est un wrapper dynamique pour ViewData, donc ces deux instructions sont les mêmes:
ViewBag.SuccessBody = TempData["successBody"];
ViewData["SuccessBody"] = TempData["successBody"];
ViewBag
et ViewData
semblent plutôt interchangeables, mais il existe différentes règles concernant la façon dont vous accédez aux données à l'intérieur. Votre problème apparaît lorsque vous essayez d'indexer dans un ViewBag
, ce qui ne fonctionne pas.
Pour ViewBag
, vous déréférencer les éléments avec un point, comme ceci.
ViewBag.MyItem
Cependant, avec ViewData
, vous accédez aux éléments en indexant la clé appropriée à partir du dictionnaire de valeurs de clé comme ceci.
ViewData["MyItem"]