博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC怎么在同一个action返回两个表的数据
阅读量:4926 次
发布时间:2019-06-11

本文共 1585 字,大约阅读时间需要 5 分钟。

一般返回一个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实现了你的需求

转载于:https://www.cnblogs.com/xuezha/p/5261534.html

你可能感兴趣的文章
PHP连接sql server
查看>>
闭包的好处罗列
查看>>
第十六章 模板和泛型编程
查看>>
android获取手机ip
查看>>
【2016.12.03】CSS笔记
查看>>
hihocoder1766 字符串问题
查看>>
接口测试总结
查看>>
jquery.validate.js常用扩展函数
查看>>
Python标准库03 路径与文件 (os.path包, glob包)
查看>>
深入了解 Flexbox 伸缩盒模型
查看>>
排序算法之插入排序
查看>>
选择排序
查看>>
【转载】ADO.NET与ROM的比较(1):ADO.NET实现CRUD
查看>>
网页或微信小程序中使元素占满整个屏幕高度
查看>>
C#枚举数值与名称的转换实例分享
查看>>
C++ push方法与push_back方法
查看>>
Spring4笔记8--Spring与JDBC模板(IoC应用的例子)
查看>>
B. Batch Sort
查看>>
构建应用层服务
查看>>
《沉静领导》读书笔记zz
查看>>