2011-08-16 2 views
1

J'ai 2 Cotrollers. Le premier définit la propriété ViewData comme ceci ViewData ["Error"] = "something"; Je peux afficher ce message sur la page. Le second contrôleur charge la grille. Lorsque j'essaie de définir la propriété ViewData à partir de ce Cotroller, elle n'apparaît pas sur la page.ViewData dans ASP.NET MVC 3

Avez-vous pourquoi? Est-ce que je fais quelque chose de mal ici?

Faites-le moi savoir s'il vous plaît.

Merci!

+0

Transmettez le modèle au contrôleur. –

+0

J'essaye d'afficher quelque chose sur la page du contrôleur de grille. Donc, je mets quelque chose dans ViewData pour que je puisse l'afficher sur la page. Cela ne fonctionne pas. –

Répondre

1

L'utilisation de deux contrôleurs pour une seule vue est un peu un non-non.

Regardez dans ViewModels pour transmettre toutes les données requises à votre vue. Vous pouvez ensuite créer une vue partielle pour votre grille et transmettre le modèle nécessaire à la vue partielle également. Considérez ViewData/ViewBag comme un dernier recours lorsqu'un ViewModel ne fonctionne pas.

+0

Alors pourquoi demandez-vous à propos de deux contrôleurs? –

+0

Voici à quoi ressemble ma page entière.3 Boîtes de texte, 1 entrée de fichier, 1 Btn de soumission, 1 grille Telerik. L'utilisateur saisit des valeurs dans les zones de texte et sélectionne 1 fichier à importer. Le bouton Soumettre prend ces 4 choses, lit le fichier et appelle le service WCF avec 4 paramètres. (TXT1, TXT2, TXT3, FILDATA). WCF renvoie un fichier XML. Je sauvegarde cela sur le disque temporaire. Tout cela se passe dans l'événement 1 Controller. Maintenant, l'événement Grid est appelé et il analyse le fichier et affiche le résultat dans la grille. Ici, je veux mettre de la valeur dans ViewData et je veux afficher ce message sur la page. –

0

Essayez-vous d'utiliser deux contrôleurs distincts pour afficher la même vue? Si c'est le cas, vous devriez probablement considérer, briser la logique de vue de votre "grille" dans une vue partielle que vous rendre à son tour dans votre vue principale.

Comme vous l'avez mentionné "ViewData" deux fois, un autre élément à considérer est la mise en œuvre du ViewModel Pattern. L'approche du dictionnaire Viewdata est rapide et assez facile à mettre en œuvre. cependant, il n'est pas sécurisé et les erreurs dues aux erreurs typographiques ne seront pas détectées au moment de la compilation.