将模型传递给局部视图

时间:2015-02-18 02:45:18

标签: asp.net asp.net-mvc asp.net-mvc-4 razor asp.net-mvc-viewmodel

我是ASP.NET MVC的新手,到目前为止,我已经阅读过,如果我在一个视图中说两个表单,建议做的事情,就是让一个View模型具有模型关联对于每个表单,此表单与主页中的任何方式无关,一个表单用于搜索苍蝇,另一个表单是联系表单,因此您可以看到没有任何关系。

这是我的“HomePageViewModel”

public class HomePageViewModel
    {
        public SearchFlyViewModel SearchFly;
        public ContactFormViewModel Contact;        
    }

,在我的索引文件中,这是我在顶部的主页

@model Project.WebSite.Models.HomePageViewModel

现在,我在我的主页内部有一个局部视图,这个局部视图有搜索飞行形式,我这样做是因为我在很多地方使用相同的形式。

我的部分视图是_QuoteForm,其中我在顶部

@model Project.WebSite.Models.SearchFlyViewModel

当我尝试在我的主页上执行此操作时

@Html.Partial("_QuoteForm", Model.SearchFly)

运行时出现错误告诉我

The model item passed into the dictionary is of type 'Project.WebSite.Models.HomePageViewModel', but this dictionary requires a model item of type 'Project.WebSite.Models.SearchFlyViewModel'.

我不明白为什么因为我没有将HomePageViewModel传递给我的局部视图,我传递了Model.SearchFly,它的类型为SearchFlyViewModel

如果有人可以帮助弄清楚我错过了什么。

感谢

1 个答案:

答案 0 :(得分:1)

Html.Partial 的第二个参数(“模型”)不应为空。

@Html.Partial("_QuoteForm", Model.SearchFly)

验证

Model.SearchFly != null