2011-10-26 89 views
1

我有一個使用model @ model.topics的masterpage,我創建了一個使用model @ model.ContactUsModel的局部視圖,並且我在母版頁中呈現了該視圖,但是它出現錯誤: 傳遞到字典中的模型項目類型爲'Nop.Web.Models.Common.topics',但該字典需要一個'Nop.Web.Models.ContactUsModel'類型的模型項目。使用Razor創建局部視圖

我打電話使用局部視圖:

@Html.Partial("Contact") 

任何建議或意見我在做什麼錯在這裏

+0

你是怎麼稱呼局部視圖的? – Frederiek

+0

@ Html.Partial(「Contact」) –

回答

2

嘗試使用

@Html.Action("Contact") 

的行動返回一個PartialView爲這工作。然後,您可以用正確的模型

public ActionResult Contact() 
{ 
    blabla, some code 
    return PartialView(myContactUsModelObject); 
} 

@Html.Partial()呈現局部視圖渲染。
It 不會調用控制器中的操作。
你仍然可以給這個方法是這樣一種模式:@Html.Partial("Contact",someObject)
如果你不給它一個模式,頁面模型將被默認
給,這是你的代碼發生了什麼

@Html.Action()調用控制器中的動作。
然後它決定給出任何結果。

我希望這有助於

+0

控制器'Nop.Web.Controllers.TopicController'上沒有找到公共操作方法'Contact'。 –

+0

雖然我有一個控制器那裏 –

+0

@MrA:當然,你是在正確的conrtoller呢? 可能是你需要指定它@ Html.Action(「Contact」,「Controller」); – Frederiek

2

部分只是渲染視圖。該操作調用Controller並呈現View。所以如果你的視圖需要Controller提供的任何代碼(比如ViewBag),你需要調用Action()。否則,調用View()。

相關問題