使用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
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
此时回至ASP.NET MVC项目中,创建两个model:
TableA model:
现在你需还要创建两个实体,去获取数据库的数据:
TableAEntity:
本篇关键部分,是创建另外一个ViewModel类,在类中添加相关model有属性。下面是重温一下:
这种方法,就等于写死了,如果有另外的model添加或是删除,得来去修改这个ViewModel类。