使用ViewModel来实现多个Model传送至视图

本文介绍如何在ASP.NET MVC应用中通过创建ViewModel类来一次性传递多个模型到视图,包括数据库表结构定义、实体类创建过程及控制器与视图的具体实现。

在开发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类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值