.net使用mvc模式开发web应用 模型与视图间的数据处理
http://www.cnblogs.com/JeffreyZhao/archive/2009/02/27/mvc-use-strong-type-everywhere.html#3427764 本文来自于
主要讲到尽可能使用强类型作为action与view间的数据传递介质 不使用viewdata
为每一个视图建立一个数据传递Molde
缘由:
1.使用ViewData的坏处是必须使用字符串作为键进行访问。字符串是什么?是常量。分散在各处的常量是维护性的大敌,而使用ViewData则几乎无可避免地将字符串常量分散在控制器和视图两个地方
2.总是使用强类型的视图,并且所有数据都从Model中获取。这么做可能会在一定程度上增加了代码量,因为我们需要为每个视图建立一个Model,不过我认为这是值得的。在强类型的视图中,VS中能够对Model的各种成员做出丰富的代码提示,我们便可以快速地输入代码,并确保不会出现“拼写”之类的低级错误。如果使用了ViewData这个弱类型的字典,那么每次我们获取某个值之后,都必须将其Cast成具体的类型才能使用,这无疑使视图模板变得复杂而难以维护。
3.使用强类型获得的益处
- 能够享受代码提示功能
- 能够获得重构工具的支持
- 能够在编译期发现更多错误
总结+
对于如商品 订单 等较复杂 数据信息 可以采用model 对于一些简单的页面 动态数据的可以脱离model 继续使用弱类型传递
最近开发的一个商城项目就是使用数据接口形式开发 其中也建立了大量的model 由于项目性能方面要求不高 所有搜索都是使用.net 提供的Excepsion树结合动态构建搜索 实现所有搜索模版的动态搜索以及统一数据请求入口控制
web数据接口服务需要在建立model时需要考虑model承载的数据分类 以期实现多个数据组合 不应使用重量的model 使得重用性较差
而在mvc开发中则可以使用一个model包含多个子模型 使得模型信息集中 便于管理 也增加了代码的可读性与扩展性
其实通过model还可以大大降低ajax传递数据改造成本 这个时候只需要重写一个view函数 在其中判断是否为xhr请求并序列化model即可
在项目开发中应该清晰知道每个model建立后用于承载什么数据 model中数据之间是否是有关联的 如果滥用模型承载数据 同样将使得项目中的数据结构混乱 难以管理
如 订单商品数据 与地址数据 为一对一 这时应该有一个订单信息模型下包含订单基本数据与订单地址模型 而不要将地址具体信息与订单基本数据直接关联
依赖标识可以更好的降低模型数据间的依赖程度 降低模型结构修改的成本
.net使用mvc模式开发web应用 模型与视图间的数据处理的更多相关文章
- 【Web开发】Mean web开发 01-Express实现MVC模式开发
简介 Mean是JavaScript的全栈开发框架.更多介绍 用Express实现MVC模式开发是Mean Web全栈开发中的一部分. Express 是一个基于 Node.js 平台的极简.灵活的 ...
- JavaFX桌面应用-MVC模式开发,“真香”
使用mvc模块开发JavaFX桌面应用在JavaFX系列文章第一篇 JavaFX桌面应用开发-HelloWorld 已经提到过,这里单独整理使用mvc模式开发开发的流程. ~ JavaFX桌面应用开发 ...
- 【转】利用MVC模式开发Java应用程序[组图]
Java是一种面向对象的语言,是实现面向对象编程的强大工具.我们在实际编程中,应该运用并发挥其最大效能.但是,要利用面向对象编程思想,自己独立开 发出好的Java应用程序,非凡是大.中型程序,并不是一 ...
- Extjs MVC模式开发,循序渐进(一)
本文讲述extjs mvc的Helloworld,tabPanel,event,页面布局layout等内容. 本页包含:MVC模式案例(一)~MVC模式案例(六),从搭建extjs mvc到点击按钮生 ...
- 使用MVC模式开发一简单的销售额查询系统
与上一篇比较,只改变了index.jsp文件中form的提交路径 <form action="ShowServlet" method="post"> ...
- Angular——MVC模式开发实战
创建项目 创建工作目录 使用bower下载需要插件 git init.add.commit之后得到分支master,再创建developer分支,然后再此分支上进行具体功能开发 MVC架构 之前小项目 ...
- 基于MVC模式开发的后台框架
1.ThinkCMF 2.NFine快速开发平台 3.力软快速开发框架 如有好的开发框架希望可以一起交流
- mvc模式开发
- MVC 模式和模型 2
MVC框架 一个实现 MVC 模式的应用包含模型.视图.控制器 3 个模块: 模型:封装了应用的数据和业务逻辑,负责管理系统业务数据 视图:负责应用的展示 控制器:负责与用户进行交互,接收用户输入.改 ...
随机推荐
- MVC之过滤器
1.过滤器 <a>:Authorization 默认实现 AuthorizeAttribute身份验证过滤器,首先运行,在其他过渡器的操作操作方法前执行;<b>:Action ...
- LeetCode 135 Candy(贪心算法)
135. Candy There are N children standing in a line. Each child is assigned a rating value. You are g ...
- 初识makefile
Makefile的规则 目标 : 需要的条件 (注意冒号两边有空格) 命令 (注意前面用tab键开头) 解释一下: 1 目标可以是一个或多个,可以是Object File,也可以是执行文件,甚至可以是 ...
- Opencv出现错误“0xc000007b”的解决办法
装了一下午的opencv.之前用VS2010装过opencv,当时使用的是cmake编译源码的办法,这个方法好处就是不用每新建一个工程就重新链接opencv库文件.今天装了个VS2013,再装open ...
- ActiveMQ实现负载均衡+高可用部署方案
一.架构和技术介绍 1.简介 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现 2.activemq的特 ...
- 【转载-pdcxs007】 Windows7配置CTex+Texmaker
!! 安装CTex会覆盖系统原来的环境变量里面的系统路径!! 坑人! Windows7配置CTex+Texmaker CTex和Texmaker的下载方法就不必细谈了,在官方网站上有.主要是CTex建 ...
- 常用的sql数据库语句
1.说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)法一:select * into b from a where 1 <>1法二:select top 0 * i ...
- rabbitMQ学习(五)
topic匹配模式,topic能满足匹配结果就行. 发送端: public class EmitLogTopic { private static final String EXCHANGE_NAME ...
- Apache 的ab压力测试工具
ab.exe -n 请求次数 -c 并发人数
- MySQL事件 Events
MySQL事件 Events 一.关键字: EVENT 二.语法: CREATE EVENT? [IF NOT EXISTS ] //如果不存在则创建 event_name? ON SCHED ...