web-dev-qa-db-fra.com

Impossible d'appliquer l'indexation avec [] à une expression de type 'System.Dynamic.DynamicObject'

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".

27
RealityDysfunction

As-tu essayé

ViewBag.SuccessBody = TempData["successBody"];
35
Slick86

ViewBag est un wrapper dynamique pour ViewData, donc ces deux instructions sont les mêmes:

ViewBag.SuccessBody = TempData["successBody"];
ViewData["SuccessBody"] = TempData["successBody"];
22
Moeri

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"]

3
FoxDeploy