2011-02-03 60 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默认成员方法一样。

相关问题