4月5号晚本来应该写出来的,这几天迷上了炉石传说,打得有点疯,明天又得上班了,收拾心情还是得写出来。上星期5晚上回家的时候,不得不吐槽一下的确有点背。6点下班冲去江夏地铁站,赶7点15分到江门的轻轨,到了南站到机子取票的时候,心中N只草泥马跑过,人真多。不得不跑去柜台,眼看赶不上了还有7分钟,打算改签,工作人员竟然要我试下。。。。。我还真打算试下,准备上电梯的时候发现,怎么电梯只有下,没有上。。。。一问工作人员,跟我说:电梯坏了,你可以去西门上,或者在那排队坐升降电梯。。。。。我看看排着长龙的升降电梯,望望的没有尽头的西门。绝望的走向地铁口,去省站搭大巴去 - -!天无绝人之路啊,搭了最后一班车,回到家了。。。。。。

  废话那么多,只是看看有没有和我差不多经历园友啊,把我不开心的事,说出来让你们开心开心,让大家平衡平衡。

  去了新公司,又要用回MVC,刚毕业出来用过一段时间,不过基础方面不怎么扎实,所以打算看书,重新好好学一遍。C#系列还是会持续更新的,除了学好一门语言,还得精通一套框架啊。。。不然好好的语言用在哪呢?

前言

  谈到框架,我们就先谈谈web form 和 MVC 的区别。这两个框架现在比较流行的,都是基于asp.net平台构建的,支持.net上任何语言。web form拥有可视化界面,我们可以拖拉控件,进行快速的页面布局,接着针对对应的控件编写事件,达到快速开发。可是对前台的HTML控制,并不理想,不知道大家有没有试过点开F12看看。。反正我是看晕了。。。另外,web form有‘视图状态’这个概念,如果控制不好,每次post后回传不必要的数据,就会浪费资源,如果数据量比较大,还会造成页面阻塞。

  正因为Web Form 的各种原因,因为MVC诞生了,从架构上面来看分三层,隔离就是为降低模块间耦合性,前端与后台的隔离,使设计与开发职责更明确;开发人员针对模块业务编写,提高代码质量,使程序更容易维护、更好的扩展。

  其实,两个框架都是基于.NET平台构建的,Web Form能实现的,ASP.NET MVC也可以,反之也成立。另外,Web Form是事件驱动了,而ASP.NET MVC是路由驱动的。我认为,Web Form适合于企业内部系统,企业系统对于页面的要求并不大,更注重后台业务逻辑,快速简洁的开发,可以减少成本。而MVC 前后端的分离,对HTML CSS JS良好控制,设计出更漂亮的页面,更适合于门户网站。不过这些不是绝对的,也有公司利用MVC和 easyui 之类的框架做企业内部系统,也是根据公司业务和开发人员技能来决定的。

新的开始

  两者的区别大致了解之后,还是得开始创建我们的项目。

  

  点击创建新的ASP.NET MVC 4 项目后,会见到模板有6个选项,空模板,基本模板,Internet应用程序,Intranet应用程序,移动应用程序,web api。

  空模板

  •   这个空模板不算空哈- -!有基本的MVC的文件夹结构、配置文件,还有ASP.NET MVC基本需要的程序集。

  基本模板

  •  这个模板表明了,创建ASP.NET MVC 所需的最低标准的资源,和空模板比起来,多了两个文件夹,Content和Scripts。

  Internet应用程序

  •   其实这个模板就是在空模板的基础上扩展的DEMO,有登陆注册功能,初学者可以去看看,学着里面敲一敲。

  Intranet应用程序

  •     跟Internet应用程序有点相同,使用了基于windows的验证机制。

  移动应用程序

  •   这个模板主要是针对移动设备的优化,里面有JQuery Mobile 框架。

  web api

  •   web api集成在ASP.NET MVC里,直接可以把ASP.NET MVC当成一个web服务框架来用,特别方便。之前的公司用corona进行开发移动软件,我也是用MVC搭建的服务。

  视图引擎我选择了Razor,其实对于Razor来说不是什么新技术啊,我对它的理解是,在视图里写.net代码,打@之后随意敲。。。。。比aspx方便多了。。。。。=。=

  

  既然自己弄着玩,那我就用基本模板好了,创建出来就见到上图的架构:

  • App_Data,这是数据的物理存储区。 此文件夹的作用与它在使用 Web 窗体页面的 ASP.NET 网站中的作用相同。
  • App_Start,这个放着的是路由配置,原本是在Global.asax里的,在MVC4分离出去了。
  • Controllers,控制器, 要求所有控制器的名称均以“Controller”结尾。
  • Models,通常包括定义对象以及定义与数据存储交互所用的逻辑的代码。
  • Scripts,存储支持应用程序的脚本文件,js,jq等。
  • Views,存储视图,里面还有个share文件夹,存放的是母版。
  • Global.asax,程序第一次执行的时候就是从这里开始,调用了App_Start里的路由配置。

  在Controllers文件夹添加一个HomeController,打开可以看见有个默认的Action ——Index,然后在Model文件夹添加一个类文件。每当我们接触一门新技术的时候,都习惯性的对这个陌生的世界打个招呼,那这次我们也不例外,HomeController 和 Model 里分别编写一下代码。

  

  添加Index视图,并且转入,将ViewData["hw"]编写进去,Ctrl+F5运行一下,可以看见我们写的Hello Word在页面上展示给我们看了,我们在地址栏上添加上/Home/Index,发现和原来的页面一样。其实这个是因为路由配置的默认设置,将/Home/Index设置为默认路径。

  

总结

  上面大概了解了MVC的基本情况,我们知道Model是编写数据逻辑的,由Controller进行调用,然后再由Controller决定返回哪个View,最后将数据展示给用户。这里另外提一提,就是这个Model,很多时候会另外建一个类库,作为一个数据层进行使用。

  写到这里也差不多了,这一次章写得挺简单的,其实借这次来打声招呼,我会写个新系列,C#的我还是会继续更新的,所以欢迎各位一起来讨论,我有什么理解不清楚的,或者有补充的都写在评论上,我会重新修改进去。好晚了。。。电脑死机了一次。。。。重写了。。。恶心死了。

  

MVC系列之开始的更多相关文章

  1. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

  2. EF和MVC系列文章导航:EF Code First、DbContext、MVC

    对于之前一直使用webForm服务器控件.手写ado.net操作数据库的同学,突然来了EF和MVC,好多新概念泉涌而出,的确犹如当头一棒不知所措.本系列文章可以帮助新手入门并熟练使用EF和MVC,有了 ...

  3. MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

    前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...

  4. MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)

    前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...

  5. MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)

    前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...

  6. MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)

    前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...

  7. ASP.NET MVC系列:从Controller访问Model数据

    在项目解决方案中,添加一个MoviesController控制器,选择对应的模板,和模型类以及数据上下文:关于如何添加模型类和数据上下文,我们在ASP.NET MVC系列:添加模型中已经介绍过

  8. 【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照(颠覆性理论)

           在[.NET特供-第三季]系列博客中的第一篇<ASP.NET MVC系列:MVC与三层图形对照>发表之后,引起了领导的注意.同一时候,开发小组内部在交流MVC和三层之间关系的 ...

  9. 【Spring MVC系列】--(4)返回JSON

    [Spring MVC系列]--(4)返回JSON 摘要:本文主要介绍如何在控制器中将数据生成JSON格式并返回 1.导入包 (1)spring mvc 3.0不需要任何其他配置,添加一个jackso ...

  10. 【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照

    近期在开发小组在研究:BS项目中是利用'MVC框架'还是继续沿用'三层'的问题. 由于曾经的.NET项目大多数都是利用三层开发的,所以大多数人都可以对三层进行熟练地运用.而项目的開始我们也曾听说过MV ...

随机推荐

  1. jQuery动态添加的元素中处理字符串溢出后在指定字符数后添加省略号

    "+[jsonData[i].questitle.lenth>40?jsonData[i].questitle.substring(0,40)+"...":json ...

  2. C#快递单号查询源码

    源码本人测试过,没有啥问题,能查询快递单号,支持的快递还挺多,圆通快递.申通快递.韵达快递的都支持单号查询的,程序是通过向爱快递(www.aikuaidi.cn)接口传输参数来查询快递单号,我直接把代 ...

  3. #Leet Code# Root to leaf

    语言:Python 描述:使用递归实现 def getList(self, node): if node is None: return [] if node.left is None and nod ...

  4. C#Lambda表达式学习日记

    Lambda表达式只是用更简单的方式来写匿名方法,彻底简化了对.NET委托类型的使用. 现在,如果我们要使用泛型 List<> 的 FindAll() 方法,当你从一个集合去提取子集时,可 ...

  5. BZOJ 3677 连珠线

    Description 在达芬奇时代,有一个流行的儿童游戏称为连珠线.当然,这个游戏是关于珠子和线的.线是红色或蓝色的,珠子被编号为\(1\)到\(n\).这个游戏从一个珠子开始,每次会用如下方式添加 ...

  6. Linux怪哉ntfs

    http://www.linuxidc.com/Linux/2013-08/88721.htm

  7. win7 下与mac虚拟机的共享文件的建立

    1. 确保针对Mac虚拟机的VMware Tools的安装 加载进入系统后,在mac里可看到安装和卸载vmware tools的两个图标(点开vmware tools磁盘),点安装的就可以了. 2. ...

  8. Eclipse构建Activiti项目,类导入提示功能不能使用

    Eclipse新建一个新的Activiti项目(Activiti项目默认使用Maven管理项目),接着配置好pom.xml添加需要的jar包依赖,引入依赖之后发现在测试类中没有提示导入所需要的包的选项 ...

  9. wcf双工通讯遇到的问题

    1.向ChannelFactory提供的InstanceContext包含未实现CallbackContractType的问题 通过添加服务引用生成的客户端代码, public class Callb ...

  10. ECHO.js 纯javascript轻量级延迟加载

    演示 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf ...