一、MVC模式简介

MVC模式是一种流行的Web应用架构技术,它被命名为模型-视图-控制器(Model-View-Controller)。在分离应用程序内部的关注点方面,MVC是一种强大而简洁的方式,尤其适合应用在Web应用程序中。

MVC将应用程序的用户界面分为三个主要部分:

  1. 模型:一组类,描述了要处理的数据以及修改和操作数据的业务规则。
  2. 视图:定义应用程序用户界面的显示方式。
  3. 控制器:一组类,用于处理来自用户、整个应用程序流以及特定应用程序逻辑的通信。

1、MVC在Web框架中的应用

MVC模式经常应用于Web程序设计中。在ASP.NET MVC中,MVC三个主要部分的定义大致如下:

  • 模型:模型是描述程序设计人员感兴趣问题域的一些类,这些类通常封装存储在数据库中的数据,以及操作这些数据和执行特定域业务逻辑的代码。在ASP.NET MVC中,模型就像使用了某种工具的数据访问层(Daa Access Layer),这种工具包括实体框架(Entity Framework)或者与包含特定域逻辑的自定义代码组合在一起的其他实体框架。
  • 视图:一个动态生成HTML页面的模板。
  • 控制器:一个协调视图和模型直接关系的特殊类。它响应用户输入,与模型进行对话,并决定呈现哪个视图(如果有的话)。在ASP.NET MVC中,这个类文件通常以后缀名Controller表示。

2、执行顺序

在ASP.NET MVC中的执行顺序可以用下图进行表示,如图所示:

其执行顺序可以描述如下:用户在浏览器地址栏里面输入要访问的网址,然后发起请求,控制器接收网页发送的请求,如果需要请求数据,则先从Model里面取出数据交给控制器,然后把数据交给视图,视图负责展现数据。如果不需要请求数据,则直接返回视图呈现给用户。

二、ASP.NET中的MVC

1、ASP.NET MVC和ASP.NET

  1. ASP.NET MVC是ASP.NET技术的子集。
  2. ASP.NET MVC在ASP.NET核心基础之上构建:
    1. 依赖于HttpHandler,如请求是如何进入控制器的。
    2. 依赖于Session、Cookie、Cache、Application等状态保持机制。
    3. 使用HttpContext、Request、Response、Server等对象。
    4. 在Controller使用智能感知很容易得到这些对象。
  3. .NET中编写Web程序的一种可选方式。

2、ASP.NET MVC和WebForms

  1. ASP.NET MVC和WebForm都是.NET中开发Web程序的一种方式,两者是一种并列的关系。
  2. WebForm的特点:
    1. 所见即所得,开发傻瓜式:服务器端控件、事件模型、状态管理。
    2. 借鉴了Winform的成功特色。
    3. 偏离了Web请求处理的原理(请求->处理->响应)。
  3. ASP.NET MVC的特点:
    1. 关注分离:
      1. WebForm只是把一个页面分成了前置页面和后置代码,分离的不够彻底。
      2. MVC可以把一个页面分成Controller、View、Model三部分,分离的更彻底。
    2. 测试性强。可以针对Controller、View、Model单独进行测试。
    3. 更加接近Web请求处理的本质。

三、创建ASP.NET MVC

下面使用Visual Studio2019创建一个ASP.NET MVC项目,其他版本的Visual Studio创建ASP.NET MVC步骤一致。

1、选择文件->新建->项目

如下图所示:

2、选择.NET Framework版本的ASP.NET MVC

如下图所示:

然后点击“下一步”按钮。

3、配置项目名称和路径

最后点击“创建”按钮,然后会弹出创建新的ASP.NET Web应用程序对话框,该对话框列出了所有ASP.NET应用程序共有的一些选项,如下图所示:

  • 选择模板。
  • 添加框架特定的文件夹和核心引用。
  • 添加单元测试。
  • 配置身份验证。
  • 添加Docker支持。

选择模板和添加文件夹和核心引用共同起作用。模板选择了一个起点,然后使用框架复选框来添加对WebForms、MVC和Web API的支持。这意味着我们可以选择一个MVC模板,然后添加Web Forms支持,或者可以选择空模板,添加对任意框架的支持。这种功能不只在创建新项目时可以使用:任何时候都可以添加对任意框架的支持,因为框架文件夹和核心引用是通过NuGet包添加的。

3.1、选择一种应用程序模板

下面对这些模板进行介绍:

  • 空(Empty):可以想见,空模板会建立一个空的项目骨架。得到的文件包括一个web.config(包含一些默认的网站配置设置)和创建项目所需的几个程序集引用,但是仅此而已。这个模板不会提供代码,不包含JavaScript或CSS脚本文件,甚至不会提供一个静态的HTML文件。
  • Web Forms:Web Forms模板为ASP.NET Web Forms开发打下基础。
  • MVC:MVC模板设置一个标准的、带几个视图的HomeController,配置站点布局,并包含一个MVC特定的HTML页面。
  • Web API:使用此模板创建的应用程序同时支持MVC和Web API。包含MVC支持,部分是为了显示API Help页面,它们记录了公有API签名。
  • 单页应用程序(Single Page Application):单页应用程序模板创建的应用程序主要通过JavaScript请求Web API服务驱动,而不是采用传统的Web页面请求/响应周期。

3.2、测试

所有的内置项目模板都有一个选项,用来使用样本单元测试创建单元测试项目。

推荐选中“创建一个单元测试项目”复选框

3.3、配置身份验证

单击“更改”按钮,可以打开更改身份验证对话框,从中可以选择身份验证方法,如下图所示:

对话框中列出了4个选项:

  • 不进行身份验证:用于不需要身份验证的应用程序,例如没有管理单元的公共网站。
  • 个人用户账户:用于在本地存储用户配置文件(如在SQL Server数据库中存储)的应用程序。支持用户名/密码账号,以及社交认证提供程序。
  • 工作或学校账户:用于通过某种形式的活动目录(包括Azure Active Directory和Office365)进行身份验证的账户。
  • Windows身份验证:用于内部网应用程序。

这里为了演示方便,选择“不进行身份验证”

最后点击“创建”按钮,完成ASP.NET MVC应用程序的创建:

ASP.NET MVC教程一:ASP.NET MVC简介的更多相关文章

  1. MVC教程一:MVC简介

    一.概述 1.MVC是一种流行的Web应用架构技术,他把Web应用划分成Model(模型).Controller(控制器)和View(视图)三部分. 2.优点:可测试.可维护 3.MVC是ASP.NE ...

  2. ASP.NET MVC 5 01 - ASP.NET概述

    本篇目录: ASP.NET 概述 .NET Framework 与 ASP.NET ASP.NET MVC简介 ASP.NET的特色和优势 典型案例 ▁▃▅ ASP.NET概述 ▅▃▁ 目前开发B/S ...

  3. ASP.NET MVC 5 02 - ASP.NET MVC 1-5 各版本特点

    参考书籍:<ASP.NET MVC 4 高级编程>.<ASP.NET MVC 5 高级编程>.<C#高级编程(第8版)>.<使用ASP.NET MVC开发企业 ...

  4. ASP.NET MVC 随想录—— 使用ASP.NET Identity实现基于声明的授权,高级篇

    在这篇文章中,我将继续ASP.NET Identity 之旅,这也是ASP.NET Identity 三部曲的最后一篇.在本文中,将为大家介绍ASP.NET Identity 的高级功能,它支持声明式 ...

  5. ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇

    在前一篇文章中,我介绍了ASP.NET Identity 基本API的运用并创建了若干用户账号.那么在本篇文章中,我将继续ASP.NET Identity 之旅,向您展示如何运用ASP.NET Ide ...

  6. (转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性

    转发:微软MVP 卢建晖 的文章,希望对大家有帮助.原文:http://blog.csdn.net/kinfey/article/details/44459625 编者语 : 昨晚写好的文章居然csd ...

  7. Asp.Net MVC<二> : IIS/asp.net管道

    MVC是Asp.net的设计思想,而IIS/asp.net是它的技术平台.理解ASP.NET的前提是对ASP.NET管道式设计的深刻认识.而ASP.NET Web应用大都是寄宿于IIS上的. IIS ...

  8. 关于html、asp、php模板引擎、aspnet mvc、REST的一点思考

    先看我对REST的一点认识,下面是<rest实战> 这本书的序言文字:      在我刚刚开始从事解决计算问题的时候,业界就有很多人有一个愿望:将系统设计为能够被自由组合的组件.互联网(I ...

  9. ASP.NET MVC中使用ASP.NET AJAX异步访问WebService

    使用过ASP.NET AJAX的朋友都知道,怎么通过ASP.NET AJAX在客户端访问WebService,其实在ASP.NET MVC中使用ASP.NET AJAX异步访问WebService 也 ...

随机推荐

  1. Common Lisp学习资源整理

    Lisp Hackers: Interviews with 100x More Productive Programmers Posted on June 26th, 2013 Lisp Hacker ...

  2. 一个我经常用到的采集网页数据抓取网页获取数据的PHP函数类

    class get_c_str { var $str; var $start_str; var $end_str; var $start_pos; var $end_pos; var $c_str_l ...

  3. vue解惑之slot(插槽)

    一.插槽是个什么玩意,能吃吗 在vue中[插槽],从字面意思来看,插槽意味着[内容的增加],回到vue的使用场景,插槽就是[父组件调用子组件时,额外增加的内容]. 插槽显不显示.显示的内容是由父组件来 ...

  4. [Android逆向]APK反编译与回编译

    一.先查壳,再反编译看验证首先打开.apk文件==>反编译apk(dex/配置文件/资源文件(apk反编译失败)>修改关键文件实现自己的目的>重新打包签名(无法重新打包)==> ...

  5. sql server重建全库索引和更新全库统计信息通用脚本

    重建全库索引: exec sp_msforeachtable 'DBCC DBREINDEX(''?'')' 更新全库统计信息: --更新全部统计信息 exec sp_updatestats 实例反馈 ...

  6. css3 中的渐变

    虽说css3 都已经使用多年了,但是关于css3的渐变用的很少.今天遇见了,就学习了一下. 首先我们打开ps,新建一个画布,选择渐变工具,这个时候我们能够看到顶栏上面的渐变类型如下 第一个我们选中的是 ...

  7. js基础总结04 --bom对象

    1.Bom 定义:浏览器对象模型,包含一系列与浏览器窗口交互的对象,如:Window,Location,History,Document,Screen 2.Window对象 定义:窗口对象,所有js中 ...

  8. Appium 使用笔记

    零.背景 公司最近有个爬虫的项目,先拿小红书下手,但是小红书很多内容 web 端没有,只能用 app 爬,于是了解到 Appium 这个强大的框架,即可以做自动化测试,也可以用来当自动化爬虫. 本文的 ...

  9. Linux下设置mysql允许远程连接

    最近在Linux上安装了Mysql,然后在Windows环境下通过Navicat来连接时,出现报错:1045 Access denied for user 'root'@'XXX' (using pa ...

  10. 爬虫(三):urllib模块

    1. urllib模块 1.1 urllib简介 urllib 是 Python3 中自带的 HTTP 请求库,无需复杂的安装过程即可正常使用,十分适合爬虫入门 urllib 中包含四个模块,分别是: ...