MVC系列之开始
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系列之开始的更多相关文章
- ASP.NET MVC 系列随笔汇总[未完待续……]
ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...
- EF和MVC系列文章导航:EF Code First、DbContext、MVC
对于之前一直使用webForm服务器控件.手写ado.net操作数据库的同学,突然来了EF和MVC,好多新概念泉涌而出,的确犹如当头一棒不知所措.本系列文章可以帮助新手入门并熟练使用EF和MVC,有了 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)
前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...
- MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)
前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)
前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)
前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...
- ASP.NET MVC系列:从Controller访问Model数据
在项目解决方案中,添加一个MoviesController控制器,选择对应的模板,和模型类以及数据上下文:关于如何添加模型类和数据上下文,我们在ASP.NET MVC系列:添加模型中已经介绍过
- 【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照(颠覆性理论)
在[.NET特供-第三季]系列博客中的第一篇<ASP.NET MVC系列:MVC与三层图形对照>发表之后,引起了领导的注意.同一时候,开发小组内部在交流MVC和三层之间关系的 ...
- 【Spring MVC系列】--(4)返回JSON
[Spring MVC系列]--(4)返回JSON 摘要:本文主要介绍如何在控制器中将数据生成JSON格式并返回 1.导入包 (1)spring mvc 3.0不需要任何其他配置,添加一个jackso ...
- 【.NET特供-第三季】ASP.NET MVC系列:MVC与三层图形对照
近期在开发小组在研究:BS项目中是利用'MVC框架'还是继续沿用'三层'的问题. 由于曾经的.NET项目大多数都是利用三层开发的,所以大多数人都可以对三层进行熟练地运用.而项目的開始我们也曾听说过MV ...
随机推荐
- jsp页面 使用c 标签的 varStatus 属性和 index 解决一行显示多少个 然后进行自动换行
jsp页面显示,一行有三条记录,自动换行 <c:forEach items="${slist}" var="s" varStatus="stat ...
- React Native:使用 JavaScript 构建原生应用 详细剖析
数月前,Facebook 对外宣布了正在开发的 React Native 框架,这个框架允许你使用 JavaScript 开发原生的 iOS 应用——就在今天,Beta 版的仓库释出了! 基于 Pho ...
- js常用字符串函数
// JS字符串 //1.replace字符串替换,只能换第一部分,就是说多个字符相同,只能换下最先的 var str='helloworld!'; alert(str.replace('llo',' ...
- Android开源项目(转载)
第一部分 界面 ImageView.ProgressBar及其他如Dialog.Toast.EditText.TableView.Activity Animation等等. 一.ListView an ...
- 目前最流行的网页自动运行EXE文件
大家对木马都不陌生了,它可能要算是计算机病毒史上最厉害的了,相信会使木马的人千千万万,但是有很多人苦于怎么把木马发给对方,现在随着计算机的普及,在网络上我相信很少有人会再轻易的接收对方的文件了,所以网 ...
- chrome:// 的秘密!!一些有用的命令!
chrome:// .......命令 集结 Chrome 有很多的特性在界面菜单中是没有体现的,可以通过 chrome:// 命令来访问 我搜集了下面这些!!!当然也是在网上找的!有的我自己也不知道 ...
- (bug更正)利用KVC和associative特性在NSObject中存储键值
KVC 一直没仔细看过KVC的用法,想当然的认为可以在NSObject对象中存入任意键值对,结果使用时碰到问题了. 一个简单的位移动画: CAKeyframeAnimation *keyPosi=[C ...
- 自动发布工具版本从python2升级成python3后遇到的种种问题(涉及paramiko,Crypto,zipfile等等)
从在公司实习到正式入职,一直还在被同事使用的是我写的一个自动发布工具.该工具的主要功能是:开发人员给出需要更新的代码包(zip格式),测试人员将该代码包部署到测服,这些代码包和JIRA数据库里的项目信 ...
- fixSidebar简介与修正log
fixSidebar是自己写的一个侧边栏固定小组件,主要是用于主内容较长时让侧边栏能保持显示,依赖于jQuery. Github地址 https://github.com/iRuxu/fixSideb ...
- bzoj 1257: [CQOI2007]余数之和sum 数学 && 枚举
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 1779 Solved: 823[Submit][Sta ...