当年在ASP.NET MVC 1.0时代我提到,在开发时最好将视图的Model定制为强类型的,这样可以充分利用静态检查功能进行排错.不过有人指出,这么做虽然易于静态检查,但是定义强类型的Model类型实在是太麻烦了,因此也出现了基于SmartBag等折衷方案.强类型是一种极端方案,而在C# 4.0中我们又可以使用另一个极端,那就是让Model成为dynamic类型,这样在视图中便可以完全自由地获取数据了.不过,在使用匿名对象的情况下视图会抛出奇怪的"无法找到成员"异常,我们必须解决这个…
背景 数据模型.领域模型和视图模型是“模型”的三种角色,一些架构用一种类型表示这三种角色,如:传统三层架构.也有一些架构用两种类型表示这三种角色,如:结合ORM的领域驱动架构.非常少见的场景是用三种类型表示这三种角色,我只在个别领域这么弄过,如:工作流引擎. 今天只说一个话题:是否有必要为视图模型引入独立的类型?还是用一种类型表达领域模型和视图模型这两种角色比较方便?引入一些词汇: A方案:用一种类型表达领域模型和视图模型这两种角色,又叫公开领域模型到视图(Open Domain To View…
架构蓝图--软件架构 "4+1" 视图模型 本文基于多个并发视图的使用情况来说明描述软件密集型系统架构的模型.使用多重视图允许独立地处理各"风险承担人":最终用户.开发人员.系统 工程师.项目经理等所关注的问题,并且能够独立地处理功能性和非功能性需求.本文分别对五种视图进行了描述,并同时给出了捕获每种视图的表示方法.这些视 图使用以架构为中心的.场景驱动以及迭代开发过程来进行设计. 1 评论 Philippe Kruchten, 高级技术专员 2005 年 1 月…
背景 一个类型可以充当多个角色,这个角色可以是显式的(实现了某个接口或基类),也可以是隐式的(承担的具体职责和上下文决定),本文就讨论四个角色:数据模型.领域模型.视图模型和命令模型. 四个角色 数据模型:面向持久化,数据的载体. 领域模型:面向业务,行为的载体. 视图模型:面向UI(向外),数据的载体. 命令模型:面向UI(向内),数据的载体. 这是四种角色,可以由一至四个类型来承担,具体选择几个类型需要考虑项目的上下文,但不同的选择对编程的要求是不同的,下面举几个例子. 数据模型和领域模型采…
在这一章中,我们首先添加一个搜索产品的模块以增强站点的功能,然后使用视图模型而不是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=…
原文 Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据 第12部分:改进视图模型和示例数据 原文地址:http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-12-Improving-the-View-Model-and-Sample-Data 系列地址:http://channel9.msdn.com/Series/Windows-Phone-8-…
EF中通过改变实体对象达到操作数据库表数据的目的,在对数据库实体操作时,肯定少不了和Linq.Lambda打交道,熟悉SQL的话,上手 Linq并不难,from in where select... 关于Lambda表达式,其实本身就是从委托一步步演化后的简写,对于基础的查询而言,Linq语句和Lambda可以相互转换.这里不做详细的介绍.说明一下Lambda表达式中where和select 的区别 1.两者同时出现的时候,会从左到右解析 ① select 在前,where在后:where的查询…
Model-View-Controller(模型-视图-控制器,MVC)模式将你的软件组织并分解成三个截然不同的角色: Model 封装了你的应用数据.应用流程和业务逻辑. View 从 Model 获取数据并格式化数据以进行显示. Controller 控制程序流程,接收输入,并把它们传递给 Model 和 View. 与其它设计模式不同,MVC 模式并没有直接反映一个你能够编写或配置的类结构.相反,MVC 更像一个概念上的指导原则或范型.概念上的 MVC 模式被描述为三个对象 —— Mode…
引言 我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点.通过仔细地观察这 些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图.方框是代表运行的程序吗?或者是代表源代码的程序块吗?或是物理计算机 吗?或仅仅是逻辑功能的分组吗?箭头是表示编译时的依赖关系吗?或者是控制流吗?或是数据流吗?通常它代表了许多事物.是否架构只需要单个的架构样式?有 时软件架构的缺陷源于过早地划分软件或过分的强调软件开发的单个方面:数据工程.运行效率.开发策略和团队组织等.…