2010-11-29 10 views
3

Quelle est la meilleure pratique - à utiliser uniquement des vues fortement typées sans aucun paramètre, qui passe par le dictionnaire ViewData, ou il est un pas mauvaise idée d'utiliser quelque chose comme ceci dans une vue:ASP.NET MVC fortement typé vues ou non?

<%: (string)ViewData["helloMessage"]%> 

Merci.

Répondre

6

Vous devriez préférer les vues fortement typées. Dans certains cas, vous n'avez besoin que d'une chaîne comme dans votre exemple, qui n'appartient pas à un modèle, alors c'est OK pour l'utiliser. L'autre façon est d'encapsuler cette variable dans une classe et de passer la classe à la vue. Le résultat serait une vue fortement typée :-)

Personnellement, je n'aime pas les chaînes magiques.

+1

Si vous transmettez uniquement une chaîne à la vue, vous n'avez pas besoin de créer une classe spéciale uniquement pour la chaîne. Au lieu de cela, passez la classe de chaîne elle-même comme modèle: 'string a =" "; return View (a); 'Aussi, si c'est une chaîne, vous devez faire' return View ((object) a); 'de sorte que la chaîne ne soit pas confondue avec le nom View - cependant, vous pouvez garder le Afficher pointant sur un modèle de chaîne –

+0

Good Point Maxim ;-) – Mariusz

1

Il n'y a rien de mal à utiliser les "chaînes magiques"
Mais elles sont sujettes à des erreurs de frappe.

Dans MVC 3, il y a un objet dynamique ViewModel dans le contrôleur qui correspond à un objet View dans la vue.
Vous pouvez donc affecter ViewModel.MyData="something"; dans le contrôleur et l'utiliser dans votre vue comme @View.MyData
C'est un peu mieux. Le fait de n'avoir que les vues fortement typées bénéficie de la vérification du temps de compilation.
Et c'est à vous de décider.
Personnellement, j'utilise un objet dynamique.

+0

L'approche par objets dynamiques dans MVC 3 est géniale. Je l'utilise beaucoup aussi ;-) – Mariusz

Questions connexes