2012-02-23 118 views
0

我试图简单地替换生成的详细信息方法与控制器中的视图模型。 我知道它应该很简单,但添加.Find(id)动作时出现错误。我猜这是一个语法的东西,或者查找动作不适用于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); 
    } 

编辑:包括视图模型:

public class ArtistsDetailsVM 
{ 
    public IEnumerable<Artist> Artists { get; set; } 
    public IEnumerable<Album> Albums { get; set; } 
    public IEnumerable<Song> Songs { get; set; } 
} 

回答

0
当你想复合材料的

的ViewModels通常使用一堆来自多个模型,集合,查找列表等的数据转换为您c的强类型ViewModel对象视图中的引用。

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

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

+0

感谢您的回应 - 我将使用viewModel引入一些额外的数据,但希望在第一个实例中直接替换它。我已经编辑了这个问题,以包括viewModel - 从你说的我认为这个错误存在是由于使用IEnumerable的艺术家,因为.find只适用于一个艺术家。 – jimwinz 2012-02-23 17:29:33

+0

是的 - 从视图模型中的艺术家删除IEnumerable工作 - 感谢您的帮助。 – jimwinz 2012-02-23 17:40:25

相关问题