首页 新闻 会员 周边

mvc3,view页面要返回多个不同的model,从控制器里面怎么写?

0
[待解决问题]

一般返回一个model这样

@model MvcMusicStore.Models.Album 

方法:

 public ActionResult Details(int id)        

{             var album = storeDB.Albums.Find(id);

            return View(album);      

   }

 

这个页面不止一个model,还有其他的,那么

Details/id,仅仅返回这一个return View(album);     我想返回其他model,在这个url里面和方法怎么写

Details/id?type=4,我想再返回类型的model

 

@model MvcMusicStore.Models.Album

@model2 MvcMusicStore.Models.AlbumType

 

如上,控制器里面返回2个model,按照我的理解应该这样

public ActionResult Details(int id,int type)       

{             var album = storeDB.Albums.Find(id);

               var albumtype=storeDB.Albumstype.Find(type);

            return View(album);     这里怎么返回视图,带2个model。这里不会写

   }

小明同学的主页 小明同学 | 初学一级 | 园豆:12
提问于:2013-02-26 13:24
< >
分享
所有回答(7)
0

第一个做法是:将这两个对象组合成一个对象返回

第二个做法是:使用ViewBag

陈希章 | 园豆:2538 (老鸟四级) | 2013-02-26 14:04
2

使用ViewBag

net_CSharp | 园豆:326 (菜鸟二级) | 2013-02-27 14:13
0

重新建立一个Model,然后将现在的两个Model合并到新添加的Model里面,尽可能的使用强类型

aehyok | 园豆:1212 (小虾三级) | 2013-03-09 11:44
0

 第一种方法:使用ViewModel概念,即建立一个新的class,将所有model都做为它的属性出现,这里你直接返回这个ViewModel即可,如:

public class UserViewModel{

public User_Info User_Info{get;set;}

public User_Extension User_Extension{get;set;}

}

第二种方法:使用ViewData或者MVC3里的ViewBag都可以

张占岭 | 园豆:464 (菜鸟二级) | 2013-03-15 09:12

public User_Info User_Info{get;set;}

public User_Extension User_Extension{get;set;}

 这样的话写回数据时就绑定不上了吧?

支持(0) 反对(0) Y2zz | 园豆:393 (菜鸟二级) | 2013-04-23 17:27
0

viewdata

viewbage

水墨.MR.H | 园豆:280 (菜鸟二级) | 2013-07-21 19:04
0

不需要返回两个model。你只需要如下:

public ActionResult Details(int id,int type)       

{             var album = storeDB.Albums.Find(id);

               var albumtype=storeDB.Albumstype.Find(type);

                ViewBag.albumtype = albumtype;

            return View(album);     

   }

 

View中:

@model Album

@{

Albumstype albumtype = ViewBag.albumtype

}

夏夏知 | 园豆:233 (菜鸟二级) | 2013-08-22 13:44

是的,快捷的办法就是ViewBag就解决了,但是从设计角度去理解的话,还是用ViewModel,将所有model都做为ViewModel的属性出现,最后返回ViewModel就行了。

支持(0) 反对(0) David.Meng | 园豆:10 (初学一级) | 2014-07-27 14:24
0

两种方式 

1:使用ViewBag 把另外一个Model存放进ViewBag中 ViewBag.Model=model2,在View页面取值       

var mode2= ViewBag.model2 as  BadDebt;

2:使用ViewModel  最好是把你需要的字段和你可能需要的字段写进一个自定的Model类中,返回给页面,这样就可以通过一个Model实现了你的需求

Flying_Boy | 园豆:185 (初学一级) | 2013-08-29 10:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册