我有一个使用模型@ model.topics的母版页,我创建了一个使用模型@ model.ContactUsModel的局部视图,我在我的母版页中渲染该视图,但它出现了错误: 传递到字典中的模型项的类型为“Nop.Web.Models.Common.topics”,但此字典需要“Nop.Web.Models.ContactUsModel”类型的模型项。
我使用以下方法调用部分视图:
@Html.Partial("Contact")
我在这里做错了什么建议或建议
答案 0 :(得分:2)
尝试使用
@Html.Action("Contact")
该操作必须返回PartialView
才能生效。然后,您可以使用正确的模型
public ActionResult Contact()
{
blabla, some code
return PartialView(myContactUsModelObject);
}
@Html.Partial()
呈现局部视图
不调用控制器中的操作
你仍然可以使用这种方法给出一个模型:@Html.Partial("Contact",someObject)
如果您没有给出模型,则默认情况下会给出页面模型
这就是您的代码所发生的事情
@Html.Action()
调用控制器中的操作
然后由行动来做出任何形式的结果。
我希望这会有所帮助
答案 1 :(得分:2)
部分只渲染视图。 Action调用Controller并呈现View。因此,如果您的视图需要Controller提供的任何代码(如ViewBag),则需要调用Action()。否则调用View()。