使用Razor创建局部视图

时间:2011-10-26 12:35:06

标签: asp.net-mvc-3 razor partial-views nopcommerce

我有一个使用模型@ model.topics的母版页,我创建了一个使用模型@ model.ContactUsModel的局部视图,我在我的母版页中渲染该视图,但它出现了错误: 传递到字典中的模型项的类型为“Nop.Web.Models.Common.topics”,但此字典需要“Nop.Web.Models.ContactUsModel”类型的模型项。

我使用以下方法调用部分视图:

 @Html.Partial("Contact")

我在这里做错了什么建议或建议

2 个答案:

答案 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()。