Asp.net mvc 不使用VM类的单个视图中的两个模型

Asp.net mvc 不使用VM类的单个视图中的两个模型,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-partialview,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc Partialview,我试图把两个局部视图放在一起,但我总是出错。 我有一个主题模型和一个类别模型,我制作了部分视图,这些视图似乎工作得很好,但当我将它们放在一个视图中时,会弹出这样一个窗口: Error 1 'Myproject.Models.Subject' is a 'type', which is not valid in the given context 在我看来,这是唯一的代码: @{Html.RenderPartial("_CategoryPartial", Myproject.Models

我试图把两个局部视图放在一起,但我总是出错。 我有一个主题模型和一个类别模型,我制作了部分视图,这些视图似乎工作得很好,但当我将它们放在一个视图中时,会弹出这样一个窗口:

Error   1   'Myproject.Models.Subject' is a 'type', which is not valid in the given context
在我看来,这是唯一的代码:

@{Html.RenderPartial("_CategoryPartial", Myproject.Models.Category);}
@{Html.RenderPartial("_SubjectPartial", Myproject.Models.Subject);}

我想如果其他一切都失败了,我将不得不创建一个单独的viewmodel,但我想先检查一下这里的问题是,您传递的是模型类型,而不是对象

void HtmlHelper.RenderPartial(string partialViewName, object model)
如果将代码更改为,则可以执行此操作

@{Html.RenderPartial("_CategoryPartial", new Myproject.Models.Category());}
@{Html.RenderPartial("_SubjectPartial", new Myproject.Models.Subject());}
然后需要在每个对象中填充属性

另一种方法是更改代码以调用返回填充对象的类,例如

@{Html.RenderPartial("_CategoryPartial", Myproject.Models.CategoryRepository.GetCategory(id));}
@{Html.RenderPartial("_SubjectPartial", Myproject.Models.SubjectRepository.Get(id));}
您需要将这些模型的实例传递给partials,而您只是指定类型,因此会出现错误

是的,对于这个视图,我将创建一个视图模型,类似于:

public class ExampleViewModel
{
    public Category Category {get;set;}
    public Subject Subject {get;set;}
}
然后做:

@{Html.RenderPartial("_CategoryPartial", Model.Category);}
@{Html.RenderPartial("_SubjectPartial", Model.Subject);}