前言

说到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进阶篇(一)——概览的更多相关文章

  1. Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径

    Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径 我们要实现 通过路由 匹配出 博客地址 和博客文章地址 例如下面的这两个地址 //http://www.cnblogs.com/ma ...

  2. MVC进阶篇(四)——[HttpGet]和[HttpPost]

    前言 Get和post,一个获取请求,一个提交请求,在MVC里面用法也很特别,总结一下,我理解的不是特别深刻,希望多多交流. 内容 [HttpGet] 需求: 用户想要通过点击修改按钮来达到修改这部分 ...

  3. MVC进阶篇(三)——model层数据验证

    前言 常常在想,姓名性别那些个验证,真的有必要每次遇到,每次写验证吗?好麻烦,于是学到MVC这里,发现MVC自带数据验证,这个东西着实是个好东西.我写了一个小demo,分享给大家. 内容 一个表单的提 ...

  4. MVC进阶篇(二)—路由机制

    前言 这个东西好像,一般也不经常动,都用默认的即可.由于MVC模式在framework里面的解析机制,区别与webform模式,是采用解析路由机制的url.从来实例化视图列对象,然后对该action进 ...

  5. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC ...

  6. [转载]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC的Web程序中的Global文件来简单的重写路由.也介绍了它本身的局限性-依赖于路由信息中的键值对: 如果键值对中没有的值,我们无法将 ...

  7. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase

    原文地址:http://www.51csharp.com/MVC/882.html   ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL 引言-- 在初级篇中,我们 ...

  8. [转]ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

    本文转自:http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NE ...

  9. Membership三步曲之进阶篇 - 深入剖析Provider Model

    Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...

随机推荐

  1. C# 结构体集合元素属性不可修改疑惑

    背景:用C#的人都知道结构体在C#中是值类型的,由于这个原因出现了一个有趣的问题,那就是结构体集合通过数字索引修改对应属性的值能不能影响到集合中的结构体呢?答案很多人可能会说不能,因为结构体是值类型的 ...

  2. python's eleventh day for me

    python2 中没有nonlocal. 函数名是什么? 函数名就是函数的名字, 本质:变量,特殊的变量. 1.单独打印函数名: def func(): print(666) print(func) ...

  3. List<T>直接充当Combox控件DataSource并扩展自定义记录的方法

    一般认为List只有转换为DataTable后才能充当CombBox的数据源,其实不然: List<SYS_COMMANDS> comdList = _menuMan.Load(c =&g ...

  4. 第十三章 MySQL用户管理(待续)

    ·············

  5. 使用CallableStatement接口调用存储过程

    直接上下代码: package com.learn.jdbc.chap07; import java.sql.CallableStatement; import java.sql.Connection ...

  6. Java对网络图片/本地图片转换成Base64编码和解码

    一.将本地图片转换成Base64编码字符串 /** * 将本地图片转换成Base64编码字符串 * * @param imgFile 图片目录路径 * @return */ public static ...

  7. 判断修改的中的值,用前面的,否则容易获得空值;this.dataGridView1.Rows[i].Cells[0].EditedFormattedValue; VS bool b = (bool)this.dataGridView1.Rows[i].Cells[0].Value;

    判断修改的中的值,用前面的,否则容易获得空值:this.dataGridView1.Rows[i].Cells[0].EditedFormattedValue;  VS     bool b = (b ...

  8. 1&nbsp;任务管理&nbsp;&nbsp;--转载于电子工程世界

    uC/OS-II 中最多可以支持64 个任务,分别对应优先级0-63,其中0 为最高优先级.63为最低级,系统保留了4个最高优先级的任务和4个最低优先级的任务,所有用户可以使用的任务数有56个. uC ...

  9. 通过helloworld来认识下backbone

    Backbone主要涉及3部分:model,collection和view.而这个框架的优势在于:数据与视图分离,通过操作model来自动更新view. 根据我的个人经验,直接写个简单的例子是最最直观 ...

  10. PHP配置数据库XML文件

    <?php $doc=new DOMDocument('1.0','utf-8'); //new一个dom对象 $doc->load("config.xml"); 加载 ...