Asp.net mvc mvc视图模型保存
大家好,我将在以下位置完成本教程: 我没有使用ViewBag,而是尝试让它使用viewModels “创建”将变成: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) {
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);
}