初识MVC框架
MVC框架
是一个框架模式,它使应用程序的输入、处理和输出分开。它可以使业务逻辑、数据、界面显示分离,使得耦合度大大降低,在这一方面与“三层”思想类似。
M——Model(模型)
要处理的业务代码和数据操作代码,模型对象负责在数据库中存取数据。
注意:模型层并非是三层架构中的Model层。在三层中,Model层中是实体。而在MVC中,Model中既有业务逻辑又有对数据的各种操作代码,因此,如果非要比较的话,它更像是三层中B层与D层的结合。
V——View(视图)
主要与用户打交道的,负责数据显示
C——Controller (控制器)
Model和View之间的桥梁,它来决定决定调用哪个Model加载哪个视图。控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型去处理请求,然后再确定用哪个视图来显示返回的数据。控制器类似一个中间者,负责传话的那个人。
简单了解以后,我们来看一下如何建立一个MVC项目。如下图:
点击确定以后,新建的项目中会如下图所示:
用红色框标出的是前面所说的M-V-C,App_Data 与一般的ASP.NET
website是一样的,用于存放数据。Content 这个目录是建议用来存放一下资源文件的。例如CSS、JS、图片等等。其他的文件夹如Images、Filters就不用介绍了。
下面通过一个小例子来简单看一下MVC的神奇之处。
1、在Model文件夹中新建一个类HelloWorldController,会自动生成一个Index方法。
2、在它的Index方法中右键添加视图,名称为Index.cshtml.(cshtml是扩展名)。
3、在Model中添加Movie模型类,代码如下
- namespace MvcMovie.Models
- {
- public class Movie
- {
- //稍后要在浏览器中显示的字段
- public int ID { get; set; }
- public string Title { get; set; }
- public DateTime ReleaseDate { get; set; }
- public string Genre { get; set; }
- public decimal Price { get; set; }
- }
- //负责在数据库中的操作,继承自Entity Framework的DbContext基类
- public class MovieDBContext : DbContext
- {
- public DbSet<Movie> Movies { get; set; }
- }
- }
4、创建数据库连接
在web.config中的<connectionStrings>中添加
- <add name="MovieDBContext"
- connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True"
- providerName="System.Data.SqlClient"
- />
5、创建一个新的类MoviesController控制器,它的作用是获取数据并使用视图将数据显示在浏览器中。
右击Model文件夹,如下图所示,图中的类都是之前动手创建的类:
运行程序,在地址栏后加上 /Movies,回车即出现下图:
单击Create New,进入添加电影页面,各字段都是之前Movies中的。
添加成功,回到VS中。在运行过程中,向Movies控制器请求,从而返回Movies电影数据库表中的所有记录,然后将结果传递给Index视图。
最后,我们看一下新添加的那一条电影信息到哪里去了。
在右面的解决方案中,找到一个以.mdf结尾的,如图
打开之后,看到十分熟悉的界面。
接着打开Movies,看到其中的数据。
小结:
对于MVC,目前只是初步的了解,还是一知半解的状态。但是跟着一个一个小Demo做,还是蛮有成就感的,期待下一步在项目中更多的实践。
初识MVC框架的更多相关文章
- .NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy
当我们要接到一个新的项目的时候,我们第一时间想到的是用微软的MVC框架,但是你是否想过微软的MVC是不是有点笨重?我们这个项目用MVC是不是有点大材小用?有没有可以替代MVC的东西呢?看到这里也许你会 ...
- .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比
在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...
- 开源:Taurus.MVC 框架
为什么要创造Taurus.MVC: 记得被上一家公司忽悠去负责公司电商平台的时候,情况是这样的: 项目原版是外包给第三方的,使用:WebForm+NHibernate,代码不堪入目,Bug无限,经常点 ...
- 编写自己的PHP MVC框架笔记
1.MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). ...
- 转 10 个最佳的 Node.js 的 MVC 框架
10 个最佳的 Node.js 的 MVC 框架 oschina 发布于: 2014年02月24日 (33评) 分享到: 收藏 +322 Node.js 是一个基于Chrome JavaScri ...
- 制作自己的MVC框架(一)——简单粗暴的实现
现在市面上有很多成熟的MVC框架,可以拿来直接用,但自己造一下轮子其实也挺有意思的. 下面先来看个最简单粗暴的MVC实现. 5个文件就能实现最简单的MVC,在Apache中设置一个虚拟目录,配置个简单 ...
- 分享一实战性开源MVC框架<Linux、Windows跨平台开发so easy>
一.引子 开源地址 https://github.com/564064202/Moon.Mvc 欢迎加入开发 .NET Core微软还在发力,但作为商用还有一段距离,很多开发库尚不能用于.NET ...
- 产品前端重构(TypeScript、MVC框架设计)
最近两周完成了对公司某一产品的前端重构,本文记录重构的主要思路及相关的设计内容. 公司期望把某一管理类信息系统从项目代码中抽取.重构为一个可复用的产品.该系统的前端是基于 ExtJs 5 进行构造的, ...
- 请求如何进入ASP.NET MVC框架
一.前言 对于WebForm开发,请求通常是一个以.aspx结尾的url,对应一个物理文件,从代码的角度来说它其实是一个控件(Page).而在MVC中,一个请求对应的是一个Controller里的Ac ...
随机推荐
- java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据
package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...
- ARC下需要注意的内存问题
之前发了一篇关于图片加载优化的文章,还是引起很多人关注的,不过也有好多人反馈看不太懂,这次谈谈iOS中ARC的一些使用注意事项,相信做iOS开发的不会对ARC陌生啦.这里不是谈ARC的使用,只是介绍下 ...
- react中实现原生enter/回车事件及antdesign组件实现方式
先直接上核心代码: this.goToHomePage换成自己逻辑 自己写的时候直接把this.goToHmoPage()换成自己的逻辑就行了,还有注意一点的是: 需要传个空函数,不然会报错 在com ...
- 读取hdfs目录,并在web页面上展示文件里的内容
最终效果图 目录树实体类: /** * @Author: DaleyZou * @Description: hdfs 目录结构的实体类,用于展示目录树的支撑操作 * @Date: Created in ...
- java对一个int数组进行排序、去重
思路: 1.使用 HashSet 进行去重 2.将 HashSet 变为 TreeSet 3.使用 TreeSet 进行排序 4.将 Set 变为 Integer 数组 5.将 Integer 数组变 ...
- Linux实战教学笔记16:磁盘原理
第十五节 磁盘原理 标签(空格分隔): Linux实战教学笔记 1,知识扩展 非脚本方式的一条命令搞定批量创建用户并设置随机10位字母数字组合密码. 1.1 sed的高级用法 [root@chensi ...
- javascript遍历方法总结
forEach 循环 JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0; index < myArray.lengt ...
- C++指针之间的赋值与转换规则总结
C++指针之间的赋值与转换规则总结 Note:以下结论不适用于类的成员函数指针,关于类的成员函数指针会单独讨论. 一.任何类型的指针变量均可直接赋值给const void * 任何类型的非const指 ...
- U盘装机记录
U盘装机记录 1. 将U盘制作为启动盘(安装PE文件到U盘). (1)准备材料 8G以上U盘一个 一个可信的启动盘制作工具(这里是用的老毛桃) (2)将U盘插入电脑,单击老毛桃客户端(出现如下图所示的 ...
- POJ 3171 区间最小花费覆盖 (DP+线段树
Cleaning Shifts Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4245 Accepted: 1429 D ...