J’ai vu le dans MVC 3. Comment est-ce différent de
dans MVC 2 ?
Réponses
Trop de publicités?Il utilise le C# 4.0 caractéristique dynamique. Il permet d'atteindre le même objectif que viewdata et devrait être évité en faveur de l'utilisation fortement typé modèles de vue (de la même manière que viewdata doit être évitée).
Donc, fondamentalement, il remplace les chaînes magiques:
ViewData["Foo"]
avec la magie des propriétés:
ViewBag.Foo
pour qui vous n'avez pas le temps de compilation de sécurité.
Je continue à blâmer Microsoft pour toujours l'introduction de ce concept dans MVC.
Le nom de l'propriétés sont sensibles à la casse.
En interne ViewBag propriétés sont stockées sous forme de paires nom/valeur dans le ViewData dictionnaire.
Remarque: dans la plupart des pré-versions de la MVC 3, le ViewBag propriété a été nommée le ViewModel comme indiqué dans cet extrait de MVC 3 notes de version:
(édité 10-8-12) Il a été suggéré que je poste la source de cette info que j'ai posté, voici la source: http://www.asp.net/whitepapers/mvc3-release-notes#_Toc2_4
MVC 2 contrôleurs de soutenir un ViewData bien que vous permet de passer des données pour un gabarit de vue à l'aide d'une liaison tardive dictionnaire de l'API. Dans MVC 3, vous pouvez également utiliser un peu plus simple syntaxe avec le ViewBag propriété pour accomplir la même but. Par exemple, au lieu de écrit ViewData["Message"]="texte", vous pouvez écrire ViewBag.Message="texte". Vous n'avez pas besoin de définir de fortement typées classes pour utiliser les ViewBag de la propriété. Parce que c'est un dynamique de la propriété, vous pouvez à la place obtenir ou définir les propriétés et il va résoudre dynamiquement au moment de l'exécution. En interne, ViewBag propriétés sont stockés comme des paires nom/valeur dans la ViewData dictionnaire. (Remarque: dans la plupart des les pré-versions de la MVC 3, le ViewBag propriété a été nommée l' ViewModel de la propriété.)
ViewBag vs ViewData en MVC
http://royalarun.blogspot.in/2013/08/viewbag-viewdata-tempdata-and-view.html
Les similitudes entre le ViewBag & ViewData :
Aide à conserver les données lorsque vous déplacez d'un contrôleur de vue. Utilisé pour transmettre des données de contrôleur à la vue correspondante. Court de la vie la valeur devient nulle lorsque la redirection se produit. C'est parce que leur but est de fournir un moyen de communiquer entre les contrôleurs et les vues. C'est un mécanisme de communication au sein du serveur d'appel.
Différence entre ViewBag & ViewData:
ViewData est un dictionnaire d'objets qui est dérivée à partir de ViewDataDictionary classe et accessibles à l'aide de chaînes de caractères comme des clés. ViewBag est une propriété dynamique qui tire parti de la nouvelle dynamique caractéristiques en C# 4.0. ViewData nécessite typecasting de type de données complexe et vérifier les valeurs null pour éviter l'erreur. ViewBag ne nécessite pas de typecasting de type de données complexe.
ViewBag & ViewData Exemple:
public ActionResult Index()
{
ViewBag.Name = "Arun Prakash";
retour Afficher();
}public ActionResult Index()
{
ViewData["Nom"] = "Arun Prakash";
retour Afficher();
}Appel en Vue
@ViewBag.Nom
@ViewData["Nom"]
Il y a quelques différences subtiles qui signifient que vous pouvez utiliser ViewData et ViewBag légèrement différemment de la vue. Un des avantages sont décrit dans ce post http://weblogs.asp.net/hajan/archive/2010/12/11/viewbag-dynamic-in-asp-net-mvc-3-rc-2.aspx et montre que coulée peut être évitée dans l’exemple, en utilisant le ViewBag au lieu de ViewData.