MVC进阶篇(一)——概览
前言
说到MVC,就得先说说框架是什么东西,MVC好多人都知道,是Model、view、controller,但是MVC到底是什么样的一个框架呢,好多人又说了是约定大于配置。下面我来说说我的理解。
内容
MVC首先是有视图和控制器和数据持久化层组成的,类似于三层框架。视图层提供了表现的界面层,model层提供了业务处理和数据操作代码。Controller层则是根据前天视图页的请求,传送给视图页的相应的数据返回,在这里可以理解为协调作用,没有什么特殊性。在后期人们在基于MVC框架下开发时,考虑到团队开发,于是将controller层独立到一个类库中,最终就是视图部分和controller分开开发,这个时候,只要注意:视图和相应的controller名称一样就可以了,然后对于类库中建立的controller需要注意:a存在的类不能为静态类修饰符必须为public;b类名必须为controller结尾;c类库实现基层的controller基类;其他地方按照平时来用就可以了。
关于约定大于配置,这个怎么理解呢?其实没什么,以前的框架,是在配置文件里面进行配置好的, 而MVC这个框架,而是采用,只要类名跟着controller的,而且修饰符为public,继承controller基类,都为控制器,并且规定控制器会产生一个与之同名的在views下面的文件夹。控制器的action方法,在添加视图的时候,在视图文件夹下生成一个同名的视图。
再说说为什么要用MVC,或者说MVC与其他asp.netWebForm开发有什么优势。
普通的webform形式:
用户通过浏览器发送请求报文,然后通过微软提供的IIS服务器组件,到FrameWork,然后在里面通过process
request方法创建起始页类的页面对象,然后在page_load方法里面根据请求的数据报文,进行业务逻辑处理,然后通过process response返回到页面相应的内容。
MVC模式:
用户通过浏览器发送请求报文,通过微软提供的IIS服务器组件,到FrameWork,然后根据路由配置,解析URL,创建解析后的对象,并调用对象的index方法,然后通过该action,调用model的业务逻辑和数据处理,最后return一个view或者重定向到其他view,或者根据其他需求进行相应的返回。
从上面的对比来看,MVC模式将界面显示与数据内容表达分离开来,在很大程度上减少了系统之间的耦合性。WebForm形式,在接受请求后,还要对请求进行实时的业务分析,不能输出整个前台界面。导致整体性效果差。
小结
MVC模式提供了很多便利性的操作,让我们的操作整体性更加强,减少了牵一发而动全身这种尴尬。下面分别说一下,MVC的路由机制、自带验证机制、通过一些demo,表现MVC怎么实现httpget和httppost操作的,还有MVC中的htmlhelper用法,相信这些就可以很好的帮助你在渲染很强的界面中更好的实现业务操作。
感谢您的宝贵时间···
MVC进阶篇(一)——概览的更多相关文章
- Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径
Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径 我们要实现 通过路由 匹配出 博客地址 和博客文章地址 例如下面的这两个地址 //http://www.cnblogs.com/ma ...
- MVC进阶篇(四)——[HttpGet]和[HttpPost]
前言 Get和post,一个获取请求,一个提交请求,在MVC里面用法也很特别,总结一下,我理解的不是特别深刻,希望多多交流. 内容 [HttpGet] 需求: 用户想要通过点击修改按钮来达到修改这部分 ...
- MVC进阶篇(三)——model层数据验证
前言 常常在想,姓名性别那些个验证,真的有必要每次遇到,每次写验证吗?好麻烦,于是学到MVC这里,发现MVC自带数据验证,这个东西着实是个好东西.我写了一个小demo,分享给大家. 内容 一个表单的提 ...
- MVC进阶篇(二)—路由机制
前言 这个东西好像,一般也不经常动,都用默认的即可.由于MVC模式在framework里面的解析机制,区别与webform模式,是采用解析路由机制的url.从来实例化视图列对象,然后对该action进 ...
- ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL
http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC ...
- [转载]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL
引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC的Web程序中的Global文件来简单的重写路由.也介绍了它本身的局限性-依赖于路由信息中的键值对: 如果键值对中没有的值,我们无法将 ...
- ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase
原文地址:http://www.51csharp.com/MVC/882.html ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL 引言-- 在初级篇中,我们 ...
- [转]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL
本文转自:http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NE ...
- Membership三步曲之进阶篇 - 深入剖析Provider Model
Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...
随机推荐
- 编写一个jQuery的扩展方法(插件)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Redhat 无线(Wifi)上网命令行配置
小结两种命令行模式下配置无线wife的方法,实践测试通过(Red Hat Enterprise Linux release 6.0 Beta(Santiago)) 一.使用wpa_supplicant ...
- Android 从本地图库或拍照后裁剪图片并设置头像
在QQ和微信等应用都会有设置头像,一般都是从本地图库选取或相机拍照,然后再截图自己喜欢的部分,然后设置.最后一步把截取好的图片再保存到本地,来保存头像.为了大家使用方便,我把自己完整的代码贴出来,大家 ...
- leetcode583
public class Solution { public int MinDistance(string word1, string word2) { , word2.Length + ]; ; i ...
- html收藏
全屏显示<input type="button" name="fullscreen" value="全屏显示" onclick=&qu ...
- libevent源码深度剖析八
libevent源码深度剖析八 ——集成信号处理 张亮 现在我们已经了解了libevent的基本框架:事件管理框架和事件主循环.上节提到了libevent中I/O事件和Signal以及Timer事件的 ...
- ubuntu16.04 安装openpose
安装 Anaconda3 Tensorflow-cpu python3tensorflow 1.4.1+opencv3, protobuf, python3-tk ================== ...
- sql语句查询中exists中为什么要用select 1?
select * from call_cdr_xz_200609 a where and a.ori_charge<>0 and exists(select 1 from special ...
- 2014年Linux 和开源技术回顾盘点
ZDNet科技观察家StevenJ.Vaughan-Nichols在年终发表了对Linux和开源技术这一年跌宕起伏的总结,细数这一年中的惊喜和不堪. 2014Linux之殇 “心脏出血(Heartbl ...
- 【Leetcode009】Palindrome Number
问题链接:https://leetcode.com/problems/palindrome-number/#/description Question:Determine whether an int ...