• 使用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类。

  • 相关阅读:
    【python】第一个爬虫:用requests库爬取网页内容
    【python】UDP协议编程
    【python】体育竞技分析:预测球队比赛成绩
    【python】手绘图制作
    【python】成绩表雷达图
    【python】numpy库和matplotlib库学习笔记
    【python】PIL库之图片处理
    【python】PIL库学习总结
    【python】利用jieba中文分词进行词频统计及生成词云
    汉诺塔问题
  • 原文地址:https://www.cnblogs.com/insus/p/5594134.html
Copyright © 2020-2023  润新知