加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC组件GUI方法

发布时间:2020-12-16 06:47:06 所属栏目:asp.Net 来源:网络整理
导读:我对使用MVC3构建交互式GUI的一般方法感兴趣. 我们的想法是构建一组可以集成(插入)到各种场景中的不同组件. 每个组件必须拥有自己的模型定义,控制器和视图. 组件不仅封装了视图,还封装了通过它的控制器的行为. 所有内部实现细节,模型,行为等……必须驻留在组
我对使用MVC3构建交互式GUI的一般方法感兴趣.

我们的想法是构建一组可以集成(插入)到各种场景中的不同组件.

每个组件必须拥有自己的模型定义,控制器和视图.
组件不仅封装了视图,还封装了通过它的控制器的行为.

所有内部实现细节,模型,行为等……必须驻留在组件内部,
使组件变得独立,模块化 – 黑盒子.
这允许在不破坏使用组件的上下文中的任何内容的情况下更改组件.

运行组件的上下文不得对组件实现的内部细节做出任何假设.

另一方面,该组件不会对将使用它的上下文做出任何假设.

最后,组件必须提供与外界“通信”或“交互”的机制.除了内部,组件必须提供某种“外部”接口(如参数,数据,函数,事件……),这将允许组件集成到执行上下文中.

上下文(或场景)是包含组件的部分.
现在,上下文的基本挑战是管理组件之间的交互.

真实世界类别组件示例:

组件显示类别列表,并允许用户执行各种操作,如排序,分页和记录选择.
在内部,它有自己的模型,存储相关信息,如当前页面,排序,选择等…
在内部,它在其自己的控制器中实现所有必需的操作(用于基本渲染,用户操作响应等).
在内部,它处理视图中的模型状态持久性,并在其自己的控制器中处理模型状态恢复.

真实世界产品组件示例:

组件显示产品列表,并在其自己的控制器中处理模型状态恢复.

真实世界的仪表板页面(上下文,场景)示例:

页面显示类别和产品组件.
产品组件显示当前所选类别的所有产品,因此必须提供外部接口(参数或其他内容)以从上下文接收所选类别标识符.
类别组件必须提供某种外部接口,以便上下文可以在选定的类别更改时执行操作,并为产品组件提供选定的类别标识符.

从技术上讲,页面更新的通信方法主要是通过AJAX,但如果没有AJAX就可以实现,那就更好了.

在AJAX的情况下,我想要使用服务器端控制器的解决方案,它决定并呈现应该在客户端上更新的内容(JSON或其他东西).

我不喜欢客户端脚本(客户端“喜欢”控制器)中的解决方案,它决定要调用哪些操作以及要更新的页面部分 – 这在前一段中所述必须由服务器上的控制器决定.

重要提示:通过某些路径直接调用时,组件不一定有效.

您通常如何实施所描述的系统?

解决方法

每个控制器处理整个用户机器模式.也就是说,粗略地说,每个控制器负责为用户案例编排用户 – 机器交互(用户机器模式是analysys阶段的结果).
现在,如果您将“标准行为”放在将协调用户 – 机器交互模式的控制器中?
这样,您将拥有“组件”而没有协调其执行的东西.
在Web表单中,您有一些页面可以协调放入其中的组件的执行…但是在Mvc中,协调员角色由控制器本身扮演.

您可以执行由控制器和视图组成的黑盒,只要它们中的每一个都负责整个用户 – 机器交互模式.这是一个“大组件”,不是一个小的构建块,因为实现CMS时就是这种情况.

The Orchard CMS use a similar approach.然而,您所谓的组件实际上是预定义的块,它们扮演着用户构建的网站的整个部分的角色.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读