2010-05-07 3 views
0
public ActionResult AddDinner() 
{ 
    Dinner dinner = dinnerRepository.GetDinner(id); 
    ViewData["dinner"] = repository.AllDinners(); 

    return View(dinner); 
} 

1) Tout d'abord, l'objet dîner et le ViewData["dinner"] passent-ils à la vue?asp.net viewdata

2) Deuxièmement, comment est-ce que je passerais sur la ViewData["dinner"] dans la vue?

+1

Vous devez modifier soit le nom de la variable 'dinner' ou la clé de la' ViewData' article. (À moins qu'ils ne contiennent la même chose.) Utiliser le même nom rend difficile la compréhension de la question: imaginez combien il sera difficile de lire le code de votre vue. –

+0

@Jeff: totalement, c'est un peu confus quand vous le lisez pour la première fois :) @mazhar: changez-le en ViewData ["dîners"] ou sth: P –

Répondre

3
  1. Oui. Les deux dinner et ViewData ["dîner"] seront disponibles sur la page. Vous pouvez accéder à dinner via le Model dans le View.

2.

<% foreach(Dinner d in (IEnumerable<Dinner>)ViewData["dinner"]) 
    { 
     // Code goes here 
    } %> 
+0

c'est en fait complètement faux! =/ –

+0

@Artiom Chilaru - Vous avez raison. J'ai complètement mal lu le code. Je suis en train de mettre à jour ma réponse pour réfléchir. –

+0

@mazhar: Voyez, @Jeff vous a dit que c'était déroutant! : D –

4

1) Oui, les deux seront disponibles dans votre vue. 2) Pendant que les données que vous passez à la méthode View() seront disponibles à partir de l'objet Model de la vue, vous pouvez accéder à toutes les données que vous avez définies dans le ViewData [] set en les lisant depuis ... ViewData []!^_^

Donc partout dans votre vue, vous pouvez le faire:

<% foreach(Dinner d in ViewData["dinner"] as IEnumerable<Dinner>) 
{ 
    RenderPartial("Dinner", d); 
} %> 

Ou quelque chose comme ça :)

Questions connexes