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

    return View(dinner); 
} 

1)首先,都是晚餐對象和ViewData["dinner"]是否傳遞到視圖?asp.net viewdata

2)其次,我將如何遍歷視圖中的ViewData["dinner"]

+1

你應該改變要麼'dinner'變量名或關鍵的' ViewData'項目。 (除非它們包含相同的內容。)使用相同的名稱很難理解這個問題:想象一下閱讀您的視圖代碼將會變得多麼困難。 – 2010-05-07 13:42:19

+0

@Jeff:完全,當你第一次閱讀它時會感到困惑:) @mazhar:將它改爲ViewData [「dinners」]或者:P – 2010-05-07 13:44:49

回答

3
  1. 是的。 dinner和ViewData [「dinner」]將在頁面上提供。您可以通過在View訪問dinner

2.

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

這實際上完全是FALSE! =/ – 2010-05-07 13:30:31

+0

@Artiom Chilaru - 你說得對。我完全誤讀了代碼。我正在提出我的答案來反思。 – 2010-05-07 13:47:41

+0

@mazhar:看,@Jeff告訴你這很混亂! :D – 2010-05-07 13:49:56

4

1)是的,都將提供你的看法。所以沒什麼可擔心的:)

2)雖然傳遞給View()方法的數據可以從視圖的Model對象中獲得,但您可以通過從View對象中讀取設置來訪問您在ViewData []中設置的所有數據... ViewData []!^_^

所以在您的視圖的任何地方,你可以這樣做:

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

或類似的東西:)