MVC怎么在同一个action返回两个表的数据
一般返回一个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返回两个表的数据的更多相关文章
- Django之同时新增数据到两个数据库表与同时返回两个表的数据(插拔式)
models:比如有以下三个模型 from django.db import models """ 基类,其他类继承即可获得对应的字段 """ ...
- Oracle 取两个表中数据的交集并集差异集合
Oracle 取两个表中数据的交集 关键字: Oracle 取两个表中数据的交集 INTERSECT Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要 ...
- 关于跨DB增量(增、改)同步两张表的数据小技巧
有些场景下,需要隔离不同的DB,彼此DB之间不能互相访问,但实际的业务场景又需要从A DB访问B DB的情形,这时怎么办?我认为有如下常规的三种方案: 1.双方提供RESET API,需要访问不同DB ...
- 学习日记3、投机取巧使两个表的数据同时在一个treeGrid中显示
不多说了直接上代码, $('#List').treegrid({ url: '@Url.Action("GetList")', width: $(window).width() - ...
- SQL 统计两个表的数据,按同一日期分组
思路:把两个表的数据按日期整合到临时表在按日期分组,求和. 例子: SELECT t.dateTime AS '日期',SUM(t.money) AS '表1利息',SUM(t.interest) A ...
- Asp.Net Mvc - 在OnResultExecut* 拦截Action返回的HTML
在Asp.Net MVC项目中通过重写ActionFilterAttribute中的方法,我们就可以在轻松的在Action方法执行前后做一些特殊的操作如:[身份认证.日志记录.内容截取等]. 但是我们 ...
- asp.net mvc 使用Ajax调用Action 返回数据【转】
使用asp.net mvc 调用Action方法很简单. 一.无参数方法. 1.首先,引入jquery-1.5.1.min.js 脚本,根据版本不同大家自行选择. <script src=& ...
- django同时查询两张表的数据,合并检索对象返回
原始需求: 1.一篇文章内容分N个版块,每篇文章的版块数量不同. 2.有个文章搜索功能,需要同时搜索标题和内容. 实现思路: 1.由于每篇文章的内容版块数量不同,因此将每个文章的标题和内容分开存入2张 ...
- ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第四篇:传递表单数据
摘要 本文将完成我们“MVC公告发布系统”的公告发布功能,以此展示在ASP.NET MVC中如何传递处理表单的数据. 前言 通过前几篇文章,我们已经能比较自如的使用ASP.NET ...
随机推荐
- Qt之读取配置文件
一.读取配置文件增删功能与修改参数数据 #ifndef CONFIG_H #define CONFIG_H #define QS_FILEPATH "E:\\woo\\Code\\Qt\\A ...
- MyBatis(3.2.3) - Paginated ResultSets using RowBounds
Sometimes, we may need to work with huge volumes of data, such as with tables with millions of recor ...
- SharpZipLib 压缩后传输给第三方平台无法识别问题
问题描述:在项目中需要将文件压缩然后传输给三方进行彩信发送,使用SharpZipLib 进行压缩,原先使用J#进行压缩处理,但是用SharpZipLib压缩后的zip文件传输过去之后,总会报发送失败. ...
- JSON解析保存在类中
//my.h#ifndef __1_Header_h#define __1_Header_h#define DEBUG 1#define aa 1 #ifdef aa#ifdef DEBUG#defi ...
- FreeMarker语法
向原作者致敬,原文地址http://www.cnblogs.com/linjiqin/p/3388298.html FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化 ...
- windows搭建virtualbox虚拟机安装的android环境
1.首先安装virtualbox,从官网下载,安装完成之后在本地连接里面有virtualbox虚拟的网卡,可能会影响网络连接,一般禁用 2.下载android的镜像,完整名称是:android-x86 ...
- java新手笔记33 多线程、客户端、服务器
1.Mouse package com.yfs.javase; public class Mouse { private int index = 1; private boolean isLive = ...
- 利用AVL树实现搬箱问题的best fit策略
//my.h //定义两个数据类型,货物Goods,箱子Box #include <vector> #include <cstddef> #include <iostre ...
- 重学C++ (1)
写在开头的话:这学期没有写太多的代码,终于把中英文两篇论文弄完了,趁着中间的空隙,想想找工作的处境.自己也定了自己的方向.不管学什么语言吧,每个语言都有自己的优势和使用的群体.只要自己是良马,终会有伯 ...
- Check Big/Little Endian
Little endian:Low memory address stores low byte value.(eg. short int 0x2211 0xbfd05c0e->0x11 ...