如何在单个视图页面中编辑两个或更多模型

时间:2012-05-22 06:03:32

标签: asp.net asp.net-mvc-3

我是MVC3的新手,我有多个模型,如BussinessDetails,ContactPerson,servicearea,地址和更多模型。 我有一个单一的视图页面,其中共享视图页面,如联系人,bussinessdetails,地址,服务区等。这些都在tabs.they有自己的模型。

我的问题是如何在同一个编辑视图页面中编辑多个模型。在发送这篇文章之前,我接受了MVC3“音乐商店”示例的帮助,但只有一个模型“ALBUM”,他们为一个模型提供编辑操作如果有一个或多个模型,我将在同一个视图页面中编辑。

我已经制作了母业务规范类。这是来自MVC“音乐商店”

 public ActionResult Edit(int id) {
   Album album = db.Albums.Find(id);
   ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
   ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", 
                                                             album.ArtistId);

   return View(album);
 }                                                        


[HttpPost]
public ActionResult Edit(Album album) {

  if (ModelState.IsValid) {
     db.Entry(album).State = EntityState.Modified;
     db.SaveChanges();
     return RedirectToAction("Index");
  }

  ViewBag.GenreId = new SelectList(db.Genres, "GenreId", "Name", album.GenreId);
  ViewBag.ArtistId = new SelectList(db.Artists, "ArtistId", "Name", 
                                                             album.ArtistId);

  return View(album);
}                                                                   

在HTTP POST中,只有模型“ALBUM”,如果有更多模型我如何在多个模型和视图上执行编辑操作?

2 个答案:

答案 0 :(得分:2)

创建一个新模型,其中包含有关两个或更多模型的信息,例如

public class MainPageModel{
    public mod mod{get; set;}
    public mod2 mod2{get; set;}
}

并在您的操作中引用MainPageModel并在对象上进行编辑,返回对象所属的模型

这是一个很好的教程

http://francorobles.wordpress.com/2011/05/03/returning-multiple-models-in-1-view-in-asp-net-mvc3/

答案 1 :(得分:0)

是的,您可以使用视图模型来完成,请在这篇文章中查看我的答案

Requred field validate MVC