Fortement typé Viewbag éléments
Si je suis à l'aide d'un ViewBag qui contient un objet fortement typé, est-il possible sur MVC, Razor pour définir (ou fonte) afin que tous les éléments qui apparaissent dans l'IntelliSense?
Par exemple permet de dire que j'ai
ViewBag.Movies.Name
ViewBag.Movies.Length
Je sais que Films est de type objet Film, qui a le Nom des membres et de la longueur
class Movie {
public string Name {get; set;}
public string Length {get; set;}
}
Je peux en quelque sorte lancer ce, comme je le fais pour le modèle
@model Transactions.UserTransactionDetails
Sorte que les membres de Film deviennent disponibles dans de Rasoir?
ViewBag n'est tout simplement pas fortement typé, c'est pourquoi vous devez utiliser un typage fort du modèle.
OriginalL'auteur John Mitchell | 2012-06-18
Vous devez vous connecter pour publier un commentaire.
Utiliser un ViewModel, qui contient les propriétés de tous les différents objets que vous affichez besoins
par exemple
Puis, avoir votre point de vue de l'utiliser comme son modèle, et vous obtiendrez intellisense dans votre point de vue.
De cette façon, vous ne modifiez pas vos modèles, EntityFramework ne seront pas affectés.
OriginalL'auteur StanK
Vous pouvez stocker dans une variable.
Puis en tapant
@movie.
produira intellisense pourName
,Length
.OriginalL'auteur Terry
Rester à l'écart de VieWbag:
http://completedevelopment.blogspot.com/2011/12/stop-using-viewbag-in-most-places.html
Suffit de créer un nouveau VieWModel qui contient d'autres modèles à l'intérieur.
<head>
section de _Layout.cshtmlOriginalL'auteur Adam Tuliper - MSFT
Pas. C'est parce que ViewBag n'est pas fortement typé. Il est mis en œuvre à l'aide de la dynamique et ExpandoObject. Si vous avez besoin d'un typage fort du modèle, pourquoi n'utilisez-vous pas?
Ne pouvez-vous pas simplement ajouter les données dont vous avez besoin pour votre modèle? Êtes-vous à l'aide de modèles de vue?
C'est une bonne idée d'utiliser Viewmodel (en général), mais il est "obligatoire" si vous allez avoir besoin d'avoir recours à des entités à partir de plusieurs modèles.
Le Film est en fait détenu dans un objet Entity Framework. L'autre est tenue dans un modèle de vue (transaction de l'utilisateur). Je suis en train de faire de la validation à l'aide de la transaction de l'utilisateur modèle à la validation des indicateurs définis. Quand j'étais en les combinant à la fois je ne pouvais pas obtenir la validation de feu correcte. D'où le fait de mettre un dans viewbag 😐 Désolé encore à apprendre ici 🙂
OriginalL'auteur alexn