2_MVC简单概念的介绍
来源:互联网 发布:mac 两个窗口并排 编辑:程序博客网 时间:2024/06/18 11:26
MVC概念简介
MVC的三大组件
1 三大组件(控制器,视图,模型)
- 控制器(Control):处理用户的输入,负责改变模型的状态并选择适当的视图来显示模型的数据
- 视图(View):就是用于显示模型中数据的用户界面,显示的内容形式在这里定义。
- 模型(Model):MVC需要提供的数据源,负责数据的访问和维护,一般对应数据库中的表,用于对数据库表中的内容的同步。
2 组件之间交互
- 从上图中可以看出,MVC从用户发送请求到页面呈现结果大致经历了五个步骤,分别如下:
- 用户在浏览器输入地址,向页面发送请求(实则是向控制器发出相关命令);
- 控制器接受命令后,向模型请求获得相关的数据;
- 模型将相应的数据返回给控制器;
- 控制器将相关数据发送到指定的视图;
- 指定的视图呈现相关的数据。
- 其中控制器可以向模型输入数据,并利用
2*
步骤同步到数据库中,也可以利用3*
步骤从数据库中取出信息存放到Model中,在返回给控制器。 - 从这五个步骤中,发现控制器起着承上启下的中枢作用,职责变得更加明晰,这也就是开发者主要关注的组件了。
MVC在ASP.NET中的Demo
实际项目中的目录结构
首先.NET MVC是一种约定优于配置的技术,不管是项目的目录结构还是文件名,Model类中字段等都有默认的约定。
App_Start:存放了4以前的版本中会在Global.aspx中定义的路由配置,过滤器配置以及WebApi配置,并作为一个单独的cs文件存在。
- App_Data:存放的是数据库的文件,本文采用外置Sql Server这里就不用关注。
- Content:存放CSS、图片等静态资源文件。
- Controllers: 存放一系列以
***Controllers
命名的控制器组件,执行与模型和视图的交互,一般业务会提取到业务逻辑层中,而在Control 中只是调用业务逻辑层进行处理。 Models: 存放Linq to SQL或ADO.NET Data Entity Model等模型组件和对应数据库中的表的实体类,而数据操作,一般会提取到数据访问层中。
Scripts: 存放应用程序必须的Javascript文件。
Views: 存放与Controllers在与方法对应的视图,注意:如果存在
***Controllers
控制器,在Views中就必然会映射一个***
命名的文件夹。在Views之下的Shared则存放视图组件的公共部分,这部分可以作为公共模板页,供其它视图的页面继承。
项目中的交互流程
我们可以查看App_Start文件夹下的RouteConfig.cs文件,里面定义了项目的默认路由以及路由默认的访问方式(Url)。
有图看出:默认访问的是Home控制器的Index action。访问的默认Url是:controller/action/id这个时候我们并不真正建立数据库,只是建立Model,现在Model中建立一个User的类,(会通过下文EF进行数据库的映射)
namespace GradeMIS.Models{ public class User { public int UserId { get; set; } public String UserName { get; set; } public String UsePasswd { get; set; } }}
以上简单定义了User的Model类,用来描述Mvc的过程。
- 接下来我们可以建立一个Controller:HomeController
- 在controller文件夹上右键,添加,控制器,改名称,空模板
namespace GradeMIS.Controllers{ public class HomeController : Controller { public ActionResult Index()//action { //模拟 User user=new User(); user.Name="测试数据"; return this.View(user); } }}
上述代码创建了一个HomeController,默认建立了一个Index的Action,Action中,得到一个User Model类,将结果返回到视图,并将user传递过去了,返回值ActionResult,他有很多子类。
你可以根据返回的内容确定返回值。比如我们返回的是页面,便可以使用ViewResult。接下来我们就可以建立一个视图
- 在控制器空白处右键,添加视图(AddView)
便会弹出上面的页面,让你设置1:视图名称,与对应的Action名称相同
2 :页面解析引擎是Razor,就是创建cshtml页面;3:创建一个强类型的视图,就是定义我们从控制器传过去的对象的类型;4:模板代码,我们传递过去是显示详情,还有其他模板:创建,删除,遍历,修改等。
5:使用布局模板页,使本页面集成模板页面布局,不设定将采用默认在_viewstart文件中的设定。然后再视图页面就可以显示我们传递过去的信息
@model GradeMIS.Models.User//强类型@{ ViewBag.Title = "详细信息";//页面标题 //Layout = "~/Views/Shared/_Layout.cshtml";定义的是布局页面}...
- 这个时候你运行,访问,就会默认访问HomeController的Index action然乎跳转到Home文件夹下的Index视图显示信息。
小结
1 本文讲解了MVC的架构,以及在VS中演示了MVC运行的流程,从用户发送请求到控制器,控制器通过MODEL与数据库进行交互,再将结果传递给视图,视图定义显示的样式,将结果呈现给用户。
2 参考资料
- MVC底层运行机制
- 理解MVC路由配置
- MVC控件解析
- 2_MVC简单概念的介绍
- TP3.2_MVC
- 线程的概念简单介绍
- 常用Web _MVC 框架_介绍
- Spring中注入概念的简单介绍
- 关于j2ee的一些简单概念介绍
- Freemarker概念简单介绍
- Zookeeper简单概念介绍
- WML教程2:简单介绍关于WML文件的概念WML Decks
- 简单介绍关于WML文件的概念WML Decks
- 简单介绍一下经济学中 比较优势 的概念
- 查全率和查准率两者概念的简单介绍
- iBATIS教程 (一)简单概念的介绍
- LDAP服务器的概念和原理简单介绍
- LDAP服务器的概念和原理简单介绍
- LDAP服务器的概念和原理简单介绍
- Elasticsearch简单使用系列--详细介绍ES的核心概念
- LDAP服务器的概念和原理简单介绍
- Behavioral模式之Command模式
- Android fragment (二)
- 双边滤波CUDA优化——BilateralFilter CUDA
- 解析阿里云大数据服务——ODPS
- 彻底关闭Linux屏幕保护,Linux字符界面黑屏
- 2_MVC简单概念的介绍
- 一个一百行内的现代的javascript路由
- OpenCV1.0试水(VC++6.0)
- DIV水平和垂直居中
- PHP面向对象(OOP)构造方法__construct()与析构方法__destruct()
- 配置vs2013 编辑mex文件
- 新手入门程序必须克服的5个障碍
- RMQ
- UE4 AI入门