`

mvc 一个controler 多个view

 
阅读更多
刘文涛原创,转载请注明出处。

1.普通意义上的一个controler一个view



2.我要说明的一个controler多个view



3.控制器的作用

视图选择,举个例子:



同样的数据,有时候想显示 表格形式,有时候想显示成图表 (注意:需求不希望2个同时显示),实现方式有3种:

1):多个controler,
     每个controler 返回一个view ;controler里面 调用相同的service方法,获得数据(M).
     优点:A:controller中不需要判断该去哪个view(每个需求是不同的入口。)
     缺点:A:代码逻辑重复(controler中), controler泛滥

2):一个controler一个 view ,
    在view中通过if  else 控制哪些显示,哪些不显示。
    优点:A:controler少,view 少
    缺点:A:view 里面有控制显示不显示的逻辑代码,可读性不好,view层本来是用来做表现的,它做了“额外”的工作。B:不同view 要求必须有相似的界面结构,很难满足差异化需求。比如 一个是左右结构,一个是上中(左右)下 结构。这时候view层里的逻辑简直就是灾难。

3):一个controler多个view ,
    在controler中通过条件判断该选择不同的view ,每个view 可以从controler 那里拿到相同的数据(M) ,按照自己的风格个性化 呈现。

优点:A:controler 恰当的扮演了 “准备数据” 和 “视图选择” 的 角色。B:视图层没有顾虑只考虑一种情况。C: 不同视图可以天马行空的实现自己的界面布局,彼此之间互不受影响。

缺点:A:view 文件多了,不同view 之间如果有相同的代码,要重复的 写 。

总结 :

i: 复杂的可扩展要求高的应用,推荐采用  3) 这个方案,对于 3)的 缺点 ,可以采用 include 公用文件,或者自定义标签的形式来解决。
ii: 2)与3)的区别还在于 :
 
    2)很多时候是 用条件判断 include 不同的代码,保留相同的代码,不同的代码越多,越乱。 拥抱 “相同的”。
    3)相同的代码,要重复的写,相同的越多越觉得重复,修改起来每个view都要改,对于不同的代码这个方案非常欢迎,拥抱“不同的”; 

而问题是如果有 10个view  每3个总能找到相同的,而相同的又不同时适用于10个,这时候,这时候  不但 3)方案有点麻烦,2)方案也麻烦。这时候多采用自定义标签,对界面做细粒度的封装 是不错的选择。  

  • 大小: 3.2 KB
  • 大小: 8.3 KB
  • 大小: 3.4 KB
  • 大小: 2.6 KB
  • 大小: 49.7 KB
分享到:
评论

相关推荐

    Extjs4.0MVC动态加载controler,完美破解Demo

    extjs4.0中,不想一次性加载所有...extjs4.0好像设计上是一个应用对应一个application,所以原先想通过动态加载多个application来实现上面的需求。但是那样会有其问题出现,即使解决,好像也不是很好,所以改用这种方式

    黄宝翕-ASP.NET MVC4开发指南

    高清扫描版的《ASP.NET MVC4开发指南》(黄保翕著),比较偏重理论,知识深度较浅,适合初学MVC的同学阅读。 1.在学习ASP.NETMVC之前 2.创建正确的开发观念 3.新手上路初体验 4.Routing与ASP.NET生命周期 5.Model相关...

    基于MVC模式的WAP开发与设计.pdf

    首先简要介绍了WAP协议与WAP网络以及MVC模式, 并 将 M V C 模 式 引 入 到 W A P 系 统 中 来 ,使 W A P 应 用 程 序 得 到 优 化 ,最 后 给 出 一 个 具 体 的 应 用 实 例 。 关键词 :无线应 用协议 ;MVC(Model...

    MVCDemo.zip

    1. Activity中controler与view联系紧密 2. Model类提供方法doLogin,其方法调用自身接口方法,形成Model架构,在AC的Controler中惰性加载一个对象,由此对象调用方法并实现接口

    Java实现MVC球体

    Java实现一个模型、两个视图和两个控制器的功能软件,即采用MVC模式或者说是观察者模式,本程序通过输入球体半径,显示球体形状,面积体积等 Sphere.java package Model; import java.util.Observable; public class...

    memery controler

    在本场景中,我们关注的是一个经过FPGA验证的内存控制器设计,具体实现为"ddr_ctrl.v"文件,这表明我们讨论的是DDR(Double Data Rate)内存的控制逻辑。 DDR内存是一种高速同步动态随机访问存储器(SDRAM),它能...

    MVC框架是什么 这里为你解答

    使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。 模型-视图-控制...

    ASP.NET Core Web API,具有单个控制器的多个Get或Post方法

    本文将深入探讨如何在一个控制器中定义多个Get或Post方法,并理解如何在ASP.NET Core中有效地管理这些操作。 首先,让我们了解ASP.NET Core MVC(Model-View-Controller)架构。MVC模式鼓励分离关注点,将业务逻辑...

    Woodwood Controler Example Protocol Program.rar

    本资料包“Woodwood Controler Example Protocol Program”提供了一个具体的示例,帮助学习者深入理解欧母龙PLC的控制协议和编程方法。 首先,我们要明确欧母龙PLC的工作原理。PLC是通过用户程序(即我们常说的梯形...

    GRBL上位机,grbl_controler

    该资源适合GRBL0.8以上版本,可以正常兼容最新的GRBL1.1F版本。以前的grbl controler,包括3.6.1版本都在GRBL1.1F上没法使用,典型的是设置界面无响应,虽然有数据返回,但是界面无显示,

    Ext4.1 dsktop MVC 动态model

    看到网上有很多问4.1的Ext desktop与它的MVC架构怎么联系起来,自己准备更新公司系统的Ext 到4.1也遇到这个问题,自己折腾了一天,看了网上很多东东,但看得不是很明白,最后只能自己专研了,悲吹!! Ext4.1 没其他...

    SystemInfo Controler

    【SystemInfo Controler】是一个基于Delphi5开发的控件,专为Windows 98/ME/2000操作系统设计。在这些较早的Windows版本中,它提供了获取和展示系统信息的功能,如硬件配置、操作系统详细信息、内存状态等。通过集成...

    Code Atmega16A mach nho_controler_

    综上所述,"Code Atmega16A mach nho_controler_"项目涵盖了AVR微控制器的硬件控制、程序设计、系统交互等多个方面,是一个综合性的嵌入式系统开发实践。通过学习和掌握这些知识,开发者可以构建出自己的智能控制...

    JAVA-SSH面试题

    一个模型能为多个视图提供数据。这提高了应用程序的重用性 控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。 然后根据处理的结果调用相应的视图来显示处理的结果。 MVC的...

    PID_Dc_ctrl.rar_DC-DC_controler dc motor_dc motor_motor DC + PID

    压缩包内的文件“PID_Dc_ctrl.slx”可能是一个Simulink模型文件,这是MATLAB软件的一个扩展,用于建立、模拟和分析多域动态系统。这个模型可能包含了DC-DC转换器的电路模型,以及与之相连的PID控制器模型,用于控制...

    address.rar

    这是一个非常有意思的搭载在Tomcat上面运行的小案例哈,博主为了... MVC架构,是MVC而不是三层架构,也即我的整个操作分为Model层,Controler层和view层 第三,利用jsp以及Servlet类来完成数据交互 第四,就是c标签的使用

    pid.rar_pid_pid controler_简单pid

    描述中提到"pid controler(pid控制器)程序比较简单,但比较实用",暗示了这是一个简易实现的PID控制算法,适合初学者或者用于基础教学。 PID控制器是一种在自动化领域广泛应用的控制算法,它通过整合比例(P)、...

    解决ASP.NET MVC返回的JsonResult 中 日期类型数据格式问题,和返回的属性名称转为“驼峰命名法”

    目录DateTime类型数据格式问题C#对象属性名称转换成JSON自动转成“驼峰命名法”解决办法创建新的 JsonResult 对象使用新的 JsonResult 对象 方法一创建一个BaseController 来重写他的Json()方法使用新的 JsonResult ...

Global site tag (gtag.js) - Google Analytics