Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc mvc视图模型保存_Asp.net Mvc_Viewmodel - Fatal编程技术网

Asp.net mvc mvc视图模型保存

Asp.net mvc mvc视图模型保存,asp.net-mvc,viewmodel,Asp.net Mvc,Viewmodel,大家好,我将在以下位置完成本教程: 我没有使用ViewBag,而是尝试让它使用viewModels “创建”将变成: public ActionResult Create() { return View(); } “创建帖子”现在有一个AlbumViewModel: [HttpPost] public ActionResult Create(AlbumViewModel albumViewModel) { if (ModelState.IsValid) {

大家好,我将在以下位置完成本教程:

我没有使用ViewBag,而是尝试让它使用viewModels

“创建”将变成:

public ActionResult Create()
{
    return View();
} 
“创建帖子”现在有一个AlbumViewModel:

[HttpPost]
public ActionResult Create(AlbumViewModel albumViewModel)
{
    if (ModelState.IsValid)
    {
        //db.Albums.Add(albumViewModel);
        //db.SaveChanges();
        return RedirectToAction("Index");  
    }

    return View(albumViewModel);
}
ViewModel将包含流派dropdownlist,而不是将其与ViewBag一起传递

AlbumViewModel类是:

public class AlbumViewModel
{
   public Album Album { get; set;}
   public SelectList Genres = new SelectList(repository.Genres, "Name", "Id");
}
正如您在创建帖子中看到的,我不确定如何使用
GenreId
保存新创建的相册


有人能告诉我您是如何做到这一点的吗?

为了保存更改,您必须将视图模型映射回EF域模型(相册)。我个人使用它来完成这项任务,因为它简化了许多编码

[HttpPost]
public ActionResult Create(AlbumViewModel albumViewModel)
{
    if (ModelState.IsValid)
    {
        var album = Mapper.Map<AlbumViewModel, Album>(albumViewModel);
        db.Albums.Add(album);
        db.SaveChanges();
        return RedirectToAction("Index");  
    }

    return View(albumViewModel);
}

本系列中的其他教程向您展示了如何在http Get create方法中保存实体,您没有传递albumViewmodel,因此在第一次加载页面时,选择列表是如何呈现的
public ActionResult Create()
{
    var albumViewModel = new AlbumViewModel();
    return View(albumViewModel);
}