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模型类,代码如下

  1. namespace MvcMovie.Models
  2. {
  3. public class Movie
  4. {
  5. //稍后要在浏览器中显示的字段
  6. public int ID { get; set; }
  7. public string Title { get; set; }
  8. public DateTime ReleaseDate { get; set; }
  9. public string Genre { get; set; }
  10. public decimal Price { get; set; }
  11. }
  12.  
  13. //负责在数据库中的操作,继承自Entity Framework的DbContext基类
  14. public class MovieDBContext : DbContext
  15. {
  16. public DbSet<Movie> Movies { get; set; }
  17. }
  18. }

4、创建数据库连接

在web.config中的<connectionStrings>中添加

  1. <add name="MovieDBContext"
  2. connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True"
  3. providerName="System.Data.SqlClient"
  4. />

5、创建一个新的类MoviesController控制器,它的作用是获取数据并使用视图将数据显示在浏览器中。

右击Model文件夹,如下图所示,图中的类都是之前动手创建的类:

运行程序,在地址栏后加上 /Movies,回车即出现下图:

单击Create New,进入添加电影页面,各字段都是之前Movies中的。

添加成功,回到VS中。在运行过程中,向Movies控制器请求,从而返回Movies电影数据库表中的所有记录,然后将结果传递给Index视图。

最后,我们看一下新添加的那一条电影信息到哪里去了。

在右面的解决方案中,找到一个以.mdf结尾的,如图

打开之后,看到十分熟悉的界面。

接着打开Movies,看到其中的数据。

小结:

对于MVC,目前只是初步的了解,还是一知半解的状态。但是跟着一个一个小Demo做,还是蛮有成就感的,期待下一步在项目中更多的实践。

初识MVC框架的更多相关文章

  1. .NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy

    当我们要接到一个新的项目的时候,我们第一时间想到的是用微软的MVC框架,但是你是否想过微软的MVC是不是有点笨重?我们这个项目用MVC是不是有点大材小用?有没有可以替代MVC的东西呢?看到这里也许你会 ...

  2. .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比

    在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...

  3. 开源:Taurus.MVC 框架

    为什么要创造Taurus.MVC: 记得被上一家公司忽悠去负责公司电商平台的时候,情况是这样的: 项目原版是外包给第三方的,使用:WebForm+NHibernate,代码不堪入目,Bug无限,经常点 ...

  4. 编写自己的PHP MVC框架笔记

    1.MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). ...

  5. 转 10 个最佳的 Node.js 的 MVC 框架

    10 个最佳的 Node.js 的 MVC 框架 oschina 发布于: 2014年02月24日 (33评) 分享到:    收藏 +322 Node.js 是一个基于Chrome JavaScri ...

  6. 制作自己的MVC框架(一)——简单粗暴的实现

    现在市面上有很多成熟的MVC框架,可以拿来直接用,但自己造一下轮子其实也挺有意思的. 下面先来看个最简单粗暴的MVC实现. 5个文件就能实现最简单的MVC,在Apache中设置一个虚拟目录,配置个简单 ...

  7. 分享一实战性开源MVC框架<Linux、Windows跨平台开发so easy>

    一.引子   开源地址 https://github.com/564064202/Moon.Mvc 欢迎加入开发 .NET Core微软还在发力,但作为商用还有一段距离,很多开发库尚不能用于.NET ...

  8. 产品前端重构(TypeScript、MVC框架设计)

    最近两周完成了对公司某一产品的前端重构,本文记录重构的主要思路及相关的设计内容. 公司期望把某一管理类信息系统从项目代码中抽取.重构为一个可复用的产品.该系统的前端是基于 ExtJs 5 进行构造的, ...

  9. 请求如何进入ASP.NET MVC框架

    一.前言 对于WebForm开发,请求通常是一个以.aspx结尾的url,对应一个物理文件,从代码的角度来说它其实是一个控件(Page).而在MVC中,一个请求对应的是一个Controller里的Ac ...

随机推荐

  1. java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据

    package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...

  2. ARC下需要注意的内存问题

    之前发了一篇关于图片加载优化的文章,还是引起很多人关注的,不过也有好多人反馈看不太懂,这次谈谈iOS中ARC的一些使用注意事项,相信做iOS开发的不会对ARC陌生啦.这里不是谈ARC的使用,只是介绍下 ...

  3. react中实现原生enter/回车事件及antdesign组件实现方式

    先直接上核心代码: this.goToHomePage换成自己逻辑 自己写的时候直接把this.goToHmoPage()换成自己的逻辑就行了,还有注意一点的是: 需要传个空函数,不然会报错 在com ...

  4. 读取hdfs目录,并在web页面上展示文件里的内容

    最终效果图 目录树实体类: /** * @Author: DaleyZou * @Description: hdfs 目录结构的实体类,用于展示目录树的支撑操作 * @Date: Created in ...

  5. java对一个int数组进行排序、去重

    思路: 1.使用 HashSet 进行去重 2.将 HashSet 变为 TreeSet 3.使用 TreeSet 进行排序 4.将 Set 变为 Integer 数组 5.将 Integer 数组变 ...

  6. Linux实战教学笔记16:磁盘原理

    第十五节 磁盘原理 标签(空格分隔): Linux实战教学笔记 1,知识扩展 非脚本方式的一条命令搞定批量创建用户并设置随机10位字母数字组合密码. 1.1 sed的高级用法 [root@chensi ...

  7. javascript遍历方法总结

    forEach 循环 JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0; index < myArray.lengt ...

  8. C++指针之间的赋值与转换规则总结

    C++指针之间的赋值与转换规则总结 Note:以下结论不适用于类的成员函数指针,关于类的成员函数指针会单独讨论. 一.任何类型的指针变量均可直接赋值给const void * 任何类型的非const指 ...

  9. U盘装机记录

    U盘装机记录 1. 将U盘制作为启动盘(安装PE文件到U盘). (1)准备材料 8G以上U盘一个 一个可信的启动盘制作工具(这里是用的老毛桃) (2)将U盘插入电脑,单击老毛桃客户端(出现如下图所示的 ...

  10. POJ 3171 区间最小花费覆盖 (DP+线段树

    Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4245   Accepted: 1429 D ...