Model-View-Controller(模型-视图-控制器,MVC)模式将你的软件组织并分解成三个截然不同的角色: Model 封装了你的应用数据.应用流程和业务逻辑. View 从 Model 获取数据并格式化数据以进行显示. Controller 控制程序流程,接收输入,并把它们传递给 Model 和 View. 与其它设计模式不同,MVC 模式并没有直接反映一个你能够编写或配置的类结构.相反,MVC 更像一个概念上的指导原则或范型.概念上的 MVC 模式被描述为三个对象 —— Mode…
背景 一个类型可以充当多个角色,这个角色可以是显式的(实现了某个接口或基类),也可以是隐式的(承担的具体职责和上下文决定),本文就讨论四个角色:数据模型.领域模型.视图模型和命令模型. 四个角色 数据模型:面向持久化,数据的载体. 领域模型:面向业务,行为的载体. 视图模型:面向UI(向外),数据的载体. 命令模型:面向UI(向内),数据的载体. 这是四种角色,可以由一至四个类型来承担,具体选择几个类型需要考虑项目的上下文,但不同的选择对编程的要求是不同的,下面举几个例子. 数据模型和领域模型采…
     上一篇我们已经介绍了如何使用NuGet把MVVMLight应用到我们的WPF项目中.这篇我们来了解下一个基本的MVVMLight框架所必须的结构和运行模式. MVVMLight安装之后,我们可以看到简易的框架布局,如上篇,生成了一个ViewModel文件夹,ViewModel层的内容都放在这边,除了Main对象的ViewModel之外,还包含一个ViewModelLocator文件, 用来注入当前的ViewModel全局实例.       一.先来说说分层结构: 如图: 1.View负…
背景 数据模型.领域模型和视图模型是“模型”的三种角色,一些架构用一种类型表示这三种角色,如:传统三层架构.也有一些架构用两种类型表示这三种角色,如:结合ORM的领域驱动架构.非常少见的场景是用三种类型表示这三种角色,我只在个别领域这么弄过,如:工作流引擎. 今天只说一个话题:是否有必要为视图模型引入独立的类型?还是用一种类型表达领域模型和视图模型这两种角色比较方便?引入一些词汇: A方案:用一种类型表达领域模型和视图模型这两种角色,又叫公开领域模型到视图(Open Domain To View…
本系列将使用zTree来创建.编辑关于品牌.车系.车型的无限级分类,使用datagrid显示,源码在github.先上最终效果: datagrid显示所有记录.分页,提供添加.修改.删除按钮,并提供简单搜索: 创建分类,弹出模态窗口,zTree显示所有分类,点击勾选按钮或节点,所选节点名称显示到文本框: 提供客户端和服务端验证,验证不通过显示出错信息: 修改分类,弹出模态窗口,zTree显示当前选中的节点名称: 创建数据模型并生成到数据库 →创建CarModel.edmx,创建模型,无限级分类的…
使用视图模型查询的时候 结果是这样的 array(6) { [0] => array(5) { ["picTitle"] => string(7) "标题2" ["picCategroy"] => string(6) "海报" ["picAuthor"] => string(12) "星耀学园" ["picPostTime"] => st…
ThinkPHP 3.2.3 试图模型的手册地址是:http://www.kancloud.cn/manual/thinkphp/1781 实例 需求:在博客列表页读取博客的(id.标题.摘要.发布时间.点击次数)等信息以及该篇博文所属分类的(分类名)等信息 数据表: crm_blog +---------+----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | D…
<?php /** * 视图模型 * */ class ViewBatchModel extends ViewModel{ public $viewFields = array( 'Jinxiao_batch'=>array('id','orderid','proid','subid','time','productdate','intobatch','num'), 'Jinxiao_product'=>array('id'=>'productID','default2'=>…
在这一章中,我们首先添加一个搜索产品的模块以增强站点的功能,然后使用视图模型而不是ViewBag向视图传递复杂数据. 注意:如果你想按照本章的代码编写示例,你必须完成第二章或者直接从www.apress.com下载第二章的源代码. 3.1 添加产品搜索 为了执行产品搜索,我们将添加一些功能使其能够按照产品名称.描述和分类进行搜索,从而让用户有一个更好的选择来查找相关结果. 之所以将分类也包含在内,是因为如果用户输入的是"clothes",而不是一件特定的衣服,那么所有的衣服都会被搜索到…
1.redirect /** * Action跳转(URL重定向) 支持指定模块和延时跳转 * access protected * @param string $url 跳转的URL表达式 * @param array $params 其它URL参数 * @param integer $delay 延时跳转的时间 单位为秒 * @param string $msg 跳转提示信息 * return void */ protected function redirect($url,$params=…