用viewModel替换生成的Details视图

时间:2012-02-23 17:06:26

标签: asp.net-mvc-3

我试图简单地用控制器中的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; }
}

1 个答案:

答案 0 :(得分:0)

当您想要将来自多个模型,集合,查找列表等的一堆数据合成到可以在视图中引用的强类型ViewModel对象时,通常会使用ViewModel。

因此,如果你想在这里使用ViewModel,你有两个选择;你可以使用一个自动播放器(在这里过度杀戮),或者你可以确保你的ArtistsDefailtsVM上的“艺术家”属性与db.Artists.Find()返回的类型相匹配。

你可以发布ArtistsDefailtsVM的代码,以及你得到的错误吗?好像.Find(id)返回一个Artist,但你的VM的“Artists”属性名称暗示了一个集合。这可能是您错误的根源。