2010-04-11 10 views
0

Après une semaine de asp.net mvc2, je n'ai toujours pas compris les avantages de ViewData.model ou plutôt comment je peux utiliser correctement Viewdata. Est-ce que certains peuvent m'apprendre comment utiliser correctement ?ViewData. * Et TModel dans asp.net MVC

De même qu'est-ce que TModel associé à viewdata? Comment utilise-t-on le TModel? Le viewdata explanation in spark view engine parle de TModel et je ne pouvais pas avoir une idée de la façon dont je peux l'utiliser dans mes projets. Est-ce que quelqu'un peut m'aider?

+0

Cette question concerne-t-elle ASP.NET MVC ou Spark View Engine? Parce que le terme "View Data" a une signification subtilement différente entre les deux. – Aaronaught

+0

@Aaronaught en fait, je suis confus. Une explication dans les deux sens m'aidera beaucoup .. –

+0

http://www.asp.net/learn/mvc-videos/video-9139.aspx –

Répondre

2

ViewData.Model est quelque chose que vous pouvez définir dans l'action du contrôleur et est passée au Voir où vous pouvez y accéder comme cette

<%=ViewData.Model.Description %> 

ou

<%=Model.Description %> 

qui est, si la classe que vous passez à la vue contient la propriété Description:

public ActionResult GetInstance(string id) 
{ 
    MyContent content = GetContentFromDatastore(id); 
    return View(content); 
} 

avec ce MyContent classe

MyContent 
{ 
    string id; 
    string description; 
} 

Fondamentalement, vous envoyez une instance d'une classe (un objet avec les propriétés sont définies, très probablement tiré de la base de données) Retour à la vue et afficher ses données dans la vue, vue étant le ascx ou ASPX fichier, qui finit par afficher à l'utilisateur/visiteur. Ceci est un exemple très simple mais on ne sait pas exactement ce que vous voulez et combien vous savez déjà. Mais essayez de laisser Spark (et autres View Engine) hors de question pour l'instant jusqu'à ce que vous connaissiez bien les bases ASP.NET MVC.

1

Mare est correct, vous pouvez utiliser vos modèles dans votre vue en accédant à l'élément ViewData.ModelName.PropertyName.

également tandis que dans votre contrôleur, vous pouvez définir certaines paires clé/valeur dans le dictionnaire ViewData:

ViewData["Address1"] = "2222 Somewhere"; 

et y accéder à votre avis:

<%= Html.Encode(ViewData["Address1"]) %> 

Il est évident que ce ne serait pas idéal pour utiliser une paire clé/valeur pour gérer toutes vos données, c'est pourquoi vous pouvez créer vos propres classes pour encapsuler des données, et passer THOSE à votre vue pour une manipulation plus facile.