gpt4 book ai didi

asp.net - 如果我使用没有 Controller 的 Razor 页面,如何实现 ViewModel

转载 作者:行者123 更新时间:2023-12-03 10:12:58 25 4
gpt4 key购买 nike

还是我需要使用 Controller ?我有一个电影类、一个流派类和一个媒体类,我需要将它们组合到模型 View 中,以便我可以访问 Razor 页面上的多个模型。我看过很多关于 Model-View-ViewModel 模式的文档,但它们似乎都围绕着使用 Controller 展开。

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; }

}
}

我的流派模型示例。我的其他类(class)(例如媒体、电影)是相似的,除了它们当然有不同的领域。
namespace MyMovies.Models
{
public class Genres
{
[Key]
public byte GenreID { get; set; }
public String GenreName { get; set; }
public String ImageURL { get; set; }
}
}

我试图创建一个 RazorPage 脚手架,它真正结合了来自每个类的代码。但是我不能在没有主键的情况下搭建脚手架。当我在没有 Entity Framework 的情况下搭建脚手架时,它说找不到我的页面。是否有关于使用 Razor 页面(无 Controller )创建 MVVM 模式的文档?

最佳答案

PageModel class in Razor Pages被认为是作为 Controller 和 ViewModel 的组合。默认情况下,它通过 @model 暴露给它的内容页面(类似于 MVC View )。指示。您可以为 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)
{

}

关于asp.net - 如果我使用没有 Controller 的 Razor 页面,如何实现 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55957993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com