使用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 ...
随机推荐
- MySQL--使用xtrabackup进行备份还原
使用rpm包安装xtrabackup ## 安装依赖包 yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl- ...
- Sublime Text 2—解决中文乱码
Sublime Text 2是一个非常棒的代码及文本编辑器,绿色小巧.速度飞快,跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮.代码补全等,有着许多其他编辑器没 ...
- YprogressBar,html5进度条样式,js进度条插件
简介 YprogressBar是一款基于HTML5的进度条插件. YprogressBar是一款轻量级进度条插件,使用方便,资源占用少,模仿好压的解压界面,带有数字显示,同时支持在描述中增加参数,以动 ...
- C++ inline函数
本文主要记录了C++中的inline函数,也就是内联函数,主要记录了以下几个问题: C++为什么引入inline函数? 为什么inline能很好的取代表达式形式的预定义? inline函数的使用场合 ...
- Devexpress 等待窗体
加载窗体以及等待窗体 程序加载时,需要等待加载完成后在显示 窗体显示顺序 1. 给用户看的等待窗体 2. 加载完成后的主窗体 代码如下: 1. 等待窗体代码 #region using using S ...
- Linux内核TCP/IP参数分析与调优
转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/167.html?1456482565 如下图展示的是TCP的三个阶段.1,TCP三次握手. ...
- redis常用命令、常见错误、配置技巧等分享
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/117.html?1455860236 1. redis查看当前所有的key ...
- scikit-learn的梯度提升算法(Gradient Boosting)使用
前言:本文的目的是记录sklearn包中GBRT的使用,主要是官网各参数的意义:对于理论部分和实际的使用希望在只是给出出处,希望之后有时间能补充完整 摘要: 1.示例 2.模型主要参数 3.模型主要属 ...
- css 弹出层-透明层
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- ng-表单验证
表单验证<AngularJs> 常用的表单验证指令 1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type ...