一 概述
MVC作为一种当前比较好的开发web的框架,不得不提一下了,和WebForm比较来看,有了很大的进步和改进。
先进行一个简单的比较,两个都是Web开发框架,理念仍然是较快速开发。
不过MVC已经几乎摒弃了臃肿的服务端控件,采用更为简洁和可定义的标签形式。前台View视图和后台Controller控制器弱耦合分离的形式,比Asp.Net前台后台采用继承的紧耦合形式更加灵活和合理。
二 基本三元素介绍
MVC不得不说的三个主要元素,就是Model,View,Controller这三个元素。下面简单地一一介绍下:
Model:这是主要负责数据库和Controller控制器交互
View视图:这是主要负责展示Controller传输给他的数据
Controller控制器:主要接受Model传过来的数据,然后传给View
画个图吧,好看些
BLL,DAL,Models是简单三层的概念,写出来防止大家把Model和Models弄混了,这里的Model可是包括了这三个的
三 创建一个简单的项目Demo
在这里,我还是比较喜欢使用项目来学习,理论讲一部分就好了,更多的理解,就通过项目来学习吧
环境:
VS2010时需要去下载独立的MVC安装包的,不是很复杂,百度可以告诉你一切
VS2012时就不需要下任何安装包了,直接就可以新建MVC项目了
然后选择MVC 4,创建一个空白的MVC项目就可以了,凡事从简单入手嘛!
看到这个目录,里面很简单,除了之前讲的三个基本元素,View,Controller,Model ,剩下的App_Data放私有权限的东西,比如数据;App_Start存放的一些重要的初始化类,后面再详细讲;Global.asax是应用程序文件,主要负责管道事件,后面详细讲;剩下的几个config就是简单的配置文件;
四 Controller控制器
在Controllers右键添加控制器,默认使用HomeController,注意:后缀一定要是Controller,在MVC有时候约定大于配置,某些约定的配置就是这么默认的,不要轻易更改。
请注意,这里开始讲解配置会比较多,理念的理解还是主要是开头的理念,Controller的作用这里就不再累赘了。
在新建的Controller里面有一个,Index,这是其中的一个Action的名字,在这里Action的含义是动作,可以理解为页面的各种动作,Index就是默认的一个动作。
在Index上面右击,添加视图,视图的名字默认和Action是一样的,不用修改,目前选择使用Aspx视图引擎,先不要模版。
添加后跳到了Index.aspx页面,这是一个HTML的世界,当你习惯性地打开工具箱的时候,你会发现,工具箱中的控件少得可怜,没有那些强大的服务端控件,没有了那些拖慢了aspx页面的服务端控件,剩下的只有简单的html。
让我们简单的写点上去,Hello World必须写,你懂的,运行起来吧小宇宙。。。。。
这里要看到一个:URL地址,默认其实是localhost:7777,我现在写的是补全后的地址。
Home是我们的控制器的名字,Index是我们Action的名字,相信朋友们应该发现一点MVC的奥秘了吧
对,没错,你们想得没错,MVC在这里的里面,是用 Controller+Action 确定访问地址,简单粗暴,嘿嘿....
五 Controller+Action
刚才讲到了访问地址,下面呢,我们再讲一点,页面跳转的知识,后面我们再进行别的问题的深入。
在刚开始学习MVC的时候,对Controller和Action的理解一般都会比较模糊,下面的几个例子来看下:
在Home控制器下新建一个Action
并且添加视图,在新建的试图里面写点东西
回到我们的Index视图中,
运行,点击我们的Link to MyAction
在此看地址,已经更改了,其实这种没有后缀的形式,在<a>的链接属性方面还是没有什么差别的。
再来看一个,更强大的东西,传说中的HtmlHelper:
<div>
Hello World,MVC,I'm JamesZhu.
<hr/>
<a href="/Home/MyAction">Link to MyAction</a>
<hr/>
<% Html.ActionLink("Link to MyAction", "MyAction", "Home"); %>
</div>
可以达到同样的效果,嘿嘿,Html这是一个很强大的东西,后面再深入讲,今天写到这里了,嘿嘿
四 总结
稍微总结下,这篇文章,主要时候有一定web开发经验,熟悉html前端,以及asp.net,然后又想学习mvc的朋友,可以借鉴下。
声明
本文主要是个人学习MVC后的一些经验以及看法,仅供参考,如有错误,欢迎指正,谢谢。
个人感觉:在学习MVC之前,最好有以下知识储备:HTML,Jquery,Ajax,Asp.Net等技术基础