使用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類。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM