2010-05-05 115 views
9

我認爲是而不是強類型。不過,我在這個視圖中有一個強烈類型的局部視圖。如何將模型從視圖傳遞到局部視圖?

我該如何將模型傳遞給這個強類型視圖?

我想是這樣

public ActionResult Test() 
     { 
       MyData = new Data(); 
       MyData.One = 1; 
       return View("Test",MyData) 
     } 

在我TestView

<% Html.RenderPartial("PartialView",Model); %> 

這給我一個計算器例外。所以我不確定如何傳遞它。當然,如果可能的話,我不想讓測試視圖強類型化,因爲如果我在該視圖中需要10個強類型局部視圖,我需要某種包裝器。

+0

你是正確的包裝,它不是一個壞的路要走 – hunter 2010-05-05 18:42:32

回答

4

您應擴展您的模型,以便它可以爲視圖提供所有必需的字段(稱爲ViewModel),或者您將它們與ViewData分開提供。

public ActionResult Test() 
     { 
       MyData = new Data(); 
       MyData.One = 1; 
       ViewData["someData"]=MyData; 
       return View(); 
     } 

則:

<% Html.RenderPartial("PartialView",ViewData["someData"]); %> 

ViewData的是一個很好的losely類型的字典

+0

然後,我將不得不將它投在partialview中嗎? – chobo2 2010-05-06 04:10:40

+1

你是什麼意思?如果你的部分視圖是強類型的MyData類,上面的行將使你的視圖沒有問題。正如您所看到的,您通過ViewData將多個模型發送到您的視圖中,因爲它不是強類型的,那麼您將爲每個強類型的PartialView拉動模型。 – 2010-05-06 08:27:08

+0

我試過這個,但不適合我,所以我試過@ Html.Partial,發現它適用於我。我不知道爲什麼。 – lawphotog 2014-05-22 15:01:18

0

將部分所需的對象放入Viewdata,並在視圖中使用ist作爲部分的輸入。

public ActionResult Test() 
     { 
       ViewData["DataForPartial"] = new PartialDataObject(); 
       return View("Test") 
     } 

在視圖中使用:

<% Html.RenderPartial("PartialView",ViewData["DataForPartial"]); %> 

但不管怎麼說:沒有理由不擁有stronly類型視圖。

+0

問題不在於它作爲視圖是一個強類型視圖的事實是,如果在視圖中有多個局部視圖,則不能將其視爲適用於所有這些情況的強類型視圖,除非您製作某種包裝或我想使用ViewData。 – chobo2 2010-05-06 04:12:08

相關問題