还是我需要使用控制器?我有一个电影类,一个流派类和一个媒体类,我需要将它们合并到模型视图中,这样我才能在Razor页面上访问多个模型。我已经看到了许多有关Model-View-ViewModel模式的文档,但它们似乎都围绕使用Controllers展开。
ViewModel类,位于名为“ ViewModel”的单独文件夹中
namespace MyMovies.Models
{
public class MoviesModelView
{
public List<Movies> Movies { get; set; }
public List<Media> Media { get; set; }
public List<Genres> Genres { get; set; }
public List<TitleType> TitleType { get; set; }
}
}
我的流派模型示例。我的其他课程(例如媒体,电影)与之类似,只是它们的课程不同。
namespace MyMovies.Models
{
public class Genres
{
[Key]
public byte GenreID { get; set; }
public String GenreName { get; set; }
public String ImageURL { get; set; }
}
}
我试图创建一个RazorPage脚手架,该脚手架实际上结合了每个类的代码。但是我不能在没有主键的情况下搭建支架。当我没有实体框架的脚手架时,它说找不到我的页面。是否有关于使用剃须刀页面(无控制器)创建MVVM模式的文档?
答案 0 :(得分:0)
PageModel class in Razor Pages被视为充当控制器和ViewModel的组合。默认情况下,它通过@model
伪指令暴露于其内容页(类似于MVC视图)。您可以为ViewModel中包装的每一项添加属性到PageModel中:
public class MyPageModel : PageModel
{
public List<Genre> Genres { get; set; }
public List<Movie> Movies { get; set; }
...
}
或者您也可以将ViewModel添加为属性:
public class MyPageModel : PageModel
{
public MoviesModelView ViewModel { get; set; }
}
在第一个示例中,您将按期望的方式引用内容页面中的内容:
@foreach(var movie in Model.Movies)
{
}
第二个方面(无论如何对我来说)比较混乱:
@foreach(var movie in Model.ViewModel.Movies)
{
}