MVC的基本概念
1:MVC 分别是 Model—View-Controller
2: MVC就是将应用程序划分为3大组件:模型、视图、控制器
3:JAVA里面的STRUTS2也是一种MVC模型,因此MVC不是ASP.NET所特有的
4:ASP.NET MVC从2008年发布1.0版本,2014年发布了MVC 5.0
MVC之间相互的关系
1:在控制器中可以直接调用视图和模型
2:在视图当中可以直接调用模型
3:在模型中不可以调用视图
4:模型能够限定视图中使用的数据,但视图中使用的模型应该由控制器控制
5:在视图中可以调用控制器(通过视图中点击链接的方式或者视图中的表单提交)
MVC与Web Form比较
二者都是基于ASP.NET Web框架构建的开发模型,所以ASP.NET平台中的一些功能可以两者通用。
Webform的Url地址是基于文件系统的,MVC则是基于Action(行为)
ASP.NET MVC优点
1:关注点分离
2:易于测试
3:易于维护
ASP.NET MVC缺点:(相对于Web Form而言)
开发成本更高,主要是一个时间上的成本
App_Data:这个目录一般用来保存数据
App_Start用来存放各种配置文件的
Content:这个目录建议存放资源文件,比如css,js,图片
Models:这个目录存放你的业务实体,数据访问层代码的类
Controllers:这个目录是建议将Controller类都放到这里来
Views:在默认情况下,所有的view(视图)文件都必须放到这个目录下边,每一个Controller对应一个子目录,而且子目录的名称必须以Controller 的命名一样,
例如:HomeController那它对应的目录就必须叫Home
ASP.NET MVC中的约定
1:所有控制器必须放到Controllers文件夹下面
2:控制器名称必须以Controller结尾
3:所有的控制器类都应该继承自Controller类(本质上就是要继承IController接口)
4:当url访问的时候如果没有找到给定名称的路径,那么它会到Views下面所有文件夹去查找相同action名称的视图文件
5:在控制器中的public方法被称为Action(行为)
6:控制器下面的action如果不想被url访问到,那么有两种方式:第一种:改变访问级别(只要不是public都不能被访问),第二种给方法加标记:[NonAction]
7:在Action中return view(),默认返回和Action名称一样的视图文件
8:http://localhost:2213/Login/Index/1 数值1会自动映射到action中的参数id中
9:在Global.asax全局应用程序类中注册了默认路由(名称为Default),默认路由指定了Controller默认为Home, Action为Index,参数id为可选参数
Razor视图基本语法:
Controller与view之间的数据传递
ViewBag:是一个动态类型的属性,在mvc3.0中才加入了viewbag属性
动态类型:dynamic,就是可以事先不为其定义属性,通过直接给属性赋值的方式就可以随时为它添加新的属性