我试图简单地用控制器中的viewModel替换生成的Details方法。 我知道它应该很简单,但是在添加.Find(id)动作时我收到错误。我猜它是一个语法的东西,或者Find动作不适用于viewModels,但无法找到答案。非常感谢任何帮助。
所以试图摆脱这个:
public ViewResult Details(int id)
{
Artist artist = db.Artists.Find(id);
return View(artist);
}
到此
public ViewResult Details(int id)
{
var viewModel = new ArtistsDetailsVM();
viewModel.Artists = db.Artists.Find(id);
return View(viewModel);
}
编辑:包含viewModel:
public class ArtistsDetailsVM
{
public IEnumerable<Artist> Artists { get; set; }
public IEnumerable<Album> Albums { get; set; }
public IEnumerable<Song> Songs { get; set; }
}
答案 0 :(得分:0)
当您想要将来自多个模型,集合,查找列表等的一堆数据合成到可以在视图中引用的强类型ViewModel对象时,通常会使用ViewModel。
因此,如果你想在这里使用ViewModel,你有两个选择;你可以使用一个自动播放器(在这里过度杀戮),或者你可以确保你的ArtistsDefailtsVM上的“艺术家”属性与db.Artists.Find()返回的类型相匹配。
你可以发布ArtistsDefailtsVM的代码,以及你得到的错误吗?好像.Find(id)返回一个Artist,但你的VM的“Artists”属性名称暗示了一个集合。这可能是您错误的根源。