码迷,mamicode.com
首页 > Web开发 > 详细

MVC怎么在同一个action返回两个表的数据

时间:2016-03-10 14:24:58      阅读:194      评论:0      收藏: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。这里不会写

   }

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

第二个做法是:使用ViewBag

使用ViewBag

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

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

public class UserViewModel{

public User_Info User_Info{get;set;}

public User_Extension User_Extension{get;set;}

}

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

public User_Info User_Info{get;set;}

public User_Extension User_Extension{get;set;}

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

viewdata

viewbage

不需要返回两个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

}

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

两种方式 

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

var mode2= ViewBag.model2 as  BadDebt;

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

MVC怎么在同一个action返回两个表的数据

标签:

原文地址:http://www.cnblogs.com/xuezha/p/5261534.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!