2011-02-03 29 views
0

所有工作都可以正常使用,但是在添加一個使用模型'MySite.Models.Cars'返回強類型視圖的新控制器後,在SiteLayout.cshtml中調用Html.Partial(「LogOnPartial」)時出現錯誤。我所說的新的觀點是這樣的:在模板MVC 3項目中調用Html.Partial(「LogOnPartial」)時出錯

return View(db.Cars.FirstOrDefault()); 

這是錯誤:

The model item passed into the dictionary is of type 'MySite.Models.Cars', but this dictionary requires a model item of type 'MySite.Models.LogOnModel'.

非常沮喪。當我在不提供模型的情況下使用新視圖時,它會再次運行。

return View(); 

我在MVC 2/ASPX中設置了完全相同的條件,它工作得很好。我不確定這是MVC 2/MVC 3還是ASPX/Razor問題。實際上它可能是一個深夜問題...

非常感謝任何答覆。

編輯:

從LogOnPartial.cshtml

第一行(ⅰ除去下劃線)

@model MySite.Models.LogOnModel 

第一行從Index.cshtml(新視圖):

@model MySite.Models.Cars 

回答

2

默認情況下,由模板創建的_LogOnModel.cshtml部分不是強類型,不需要任何模型。如果您對其進行了修改以便需要某個型號,則在調用該型號時需要通過此型號:

@Html.Partial("_LogOnPartial", SomeLogonModelInstance) 
+0

哎喲......我不小心把它強制輸入。它真的很晚。你會得到答案,看起來你可以使用一些額外的點;) – Malako 2011-02-03 06:54:16

0

郵政代碼從你的觀點。 (至少前幾行)。您的視圖期待某個特定類型的模型(LogOnModel),但您傳遞的是其他類型(Cars)。

您應該看到在您的視圖的第一行中引用此LogOnModel。如果您發現錯誤,請繼續解決問題,如果不在此處發佈您的視圖副本,我們將幫助您解決。

+0

編輯的問題 – Malako 2011-02-03 06:51:21

0

看起來好像它可能是深夜問題。部分的類型是什麼?從錯誤信息中可以看出,當部分模型正在尋找一個LogOn模型時,彷彿你傳入了一個模型類型的汽車。這可能是在創建Partial時自動創建的。

+0

LateNightIssue == true。我當天早些時候對部分視圖進行了混淆,並且無論出於何種原因都強制輸入。我刪除了添加到視圖中的代碼,但忘記了第一行。 – Malako 2011-02-05 06:18:29

0

看來你在_Layout頁面中使用了自定義成員資格和局部視圖(_LogOnPartial)。默認情況下_Layout頁面沒有控制器,所以如果沒有必要,不要使用任何模型。將LogOnModel放在_Layout頁面外,並讓LogOff和LogOn ActionLikns保持在_LogOnPartial上,就像EF默認成員方法一樣。