使用ViewModel来实现多个Model传送至视图
在开发ASP.NET MVC时,我们会遇上这样的情形,需要一次性传送多个Model从控制器Controller至视图View。
实现很简单,只是创建一个集合类即可。
Ok,下面先在数据库准备一些数据,如:
CREATE TABLE [dbo].[TableA]
(
[A] NVARCHAR(30) NULL,
[B] NVARCHAR(30) NULL,
[C] NVARCHAR(30) NULL
)
GO INSERT INTO [dbo].[TableA] ([A],[B],[C])
VALUES ('a1','b1','c1'),('a2','b2','c2'),
('a3','b3','c3'),('a4','b4','c4'),
('a5','b5','c5')
GO CREATE PROCEDURE [dbo].[usp_TableA_GetAll]
AS
SELECT [A],[B],[C] FROM [dbo].[TableA]
GO
Source Code
另一份数据:
CREATE TABLE [dbo].[TableB]
(
[X] DECIMAL(18,8) NULL,
[Y] DECIMAL(18,8) NULL,
[Z] DECIMAL(18,8) NULL
)
GO INSERT INTO [dbo].[TableB] ([X],[Y],[Z])
VALUES (0.2,0.3,0.4),(1.2,2.3,3.4),(4.2,5.3,6.4)
GO CREATE PROCEDURE [dbo].[usp_TableB_GetAll]
AS
SELECT [X],[Y],[Z] FROM [dbo].[TableB]
GO
Source Code
此时回至ASP.NET MVC项目中,创建两个model:
TableA model:
TableB model:
现在你需还要创建两个实体,去获取数据库的数据:
TableAEntity:
TableBEntity:
一切就绪,转入正题,实现ViewModel类:
在控制器中:
下面是视图实现:
上图#2代码如下:
程序运行结果:
本篇关键部分,是创建另外一个ViewModel类,在类中添加相关model有属性。下面是重温一下:
这种方法,就等于写死了,如果有另外的model添加或是删除,得来去修改这个ViewModel类。
使用ViewModel来实现多个Model传送至视图的更多相关文章
- 使用Tuple来实现多个Model传送至视图
前面Insus.NET实现过<使用ViewModel来实现多个Model传送至视图>http://www.cnblogs.com/insus/p/5594134.html 和<使用E ...
- 使用ExpandoObject来实现多个Model传送至视图
昨天Insus.NET有实现<使用ViewModel来实现多个Model传送至视图>http://www.cnblogs.com/insus/p/5594134.html 那今天Insus ...
- MVC(Model(模型) View(视图) Controller(控制器))
复习 1. 商品表 增删改查 index.php add.php view.php edit.php action.php 2. MVC(Model(模型) Vie ...
- 自定义MVC视图引擎ViewEngine 创建Model的专属视图
MVC内置的视图引擎有WebForm view engine和Razor view engine,当然也可以自定义视图引擎ViewEngine.本文想针对某个Model,自定义该Model的专属视图. ...
- ASP.NET MVC自定义视图引擎ViewEngine 创建Model的专属视图
MVC内置的视图引擎有WebForm view engine和Razor view engine,当然也可以自定义视图引擎ViewEngine. 本文想针对某个Model,自定义该Model的专属视图 ...
- PyQt学习随笔:重写setData方法截获Model/View中视图数据项编辑的注意事项
根据<PyQt学习随笔:Model/View中视图数据项编辑变动实时获取变动数据的方法>可以重写从PyQt的Model类继承的setData方法来实时截获View中对数据的更改,但需要注意 ...
- PyQt学习随笔:Model/View中视图数据项编辑变动实时获取变动数据的方法
对于Model/View中视图的数据编辑后怎么能实时获取编辑的数据变动位置和变动情况查阅了一些资料,终于基本弄明白必须重写Model的setData方法才能截获.setData方法是视图中各种角色数据 ...
- asp.net core mvc视频A:笔记3-3.Model与强类型视图
创建项目,添加TestController 定义一个类(Model),并赋值 建立视图页面 注意:Model是一个特定的对象,取决于传递过来的参数 运行结果 到现在为止,依然没有改变动态类型,需要转换 ...
- C# 6.0的字典(Dictionary)的语法
在C# 6.0,当我们使用Dictionary时,我们可以使用新语法,来去简化程序以提高效率. public Dictionary<string, object> OldToolLocat ...
随机推荐
- TypeScript - Interfaces
简介 关注于数据值的 ‘shape’的类型检查是TypeScript核心设计原则.这种模式有时被称为‘鸭子类型’或者‘结构子类型化’. . 在TypeScript中接口interfaces的责任就是命 ...
- redis(二)高级用法
redis(二)高级用法 事务 redis的事务是一组命令的集合.事务同命令一样都是redis的最小执行单元,一个事务中的命令要么执行要么都不执行. 首先需要multi命令来开始事务,用exec命令来 ...
- RabbitMQ(五) -- topics
RabbitMQ(五) -- topics `rabbitmq`中的`topic exchange`将路由键和某模式进行匹配,从而类似于正则匹配的方式去接收喜欢的信息. topic exchange ...
- Ehcache BigMemory: 摆脱GC困扰
问题 使用java开源项目经常需要调优jvm,以优化gc.对于gc,如果对象都是短时对象,那么jvm相对容易优化,假如碰上像solr使用自带java cache的项目,那么gc严重受限于cache,因 ...
- 浅析Windows安全相关的一些概念
Session 我们平常所说的Session是指一次终端登录, 这里的终端登录是指要有自己的显示器和鼠标键盘等, 它包括本地登录和远程登录.在XP时代每次终端登录才会创建一个Session,但是在Vi ...
- Atitti.数字证书体系cer pfx attilax总结
Atitti.数字证书体系cer pfx attilax总结 一.数字证书常见标准 1 数字证书文件格式(cer和pfx)的区别: 1 二.数字证书存储内容 2 X.509是一种非常通用的证书格式. ...
- Python中的__new__和__init__
Python中的__new__和__init__ 写了这么多的class,现在才知道还有个__new__方法, 那么它和__init__有什么区别呢? class TestCls(): "& ...
- 快速入门系列--GIT版本控制工具
由于GIT刚刚开始使用不久,经常会在Merge时出现没有change-id的情况,在结合gerrit使用时,经常出现不能提交的情形,使得自己很困扰.最近有次熬夜加班,在代码完成后,由于多人在很短时间内 ...
- TSQL Merge 用法
在更新数据仓库时,经常需要根据源表对Target表进行数据同步,Merge 命令具有数据更新,删除,插入的功能,专门用于数据同步,并将数据的更新输出到表中.在使用Merge命令时,需要注意when n ...
- JS中call、apply、bind使用指南,带部分原理。
为什么需要这些?主要是因为this,来看看this干的好事. box.onclick = function(){ function fn(){ alert(this); } fn();}; 我们原本以 ...