ASP.NET MVC教程一:ASP.NET MVC简介
一、MVC模式简介
MVC模式是一种流行的Web应用架构技术,它被命名为模型-视图-控制器(Model-View-Controller)。在分离应用程序内部的关注点方面,MVC是一种强大而简洁的方式,尤其适合应用在Web应用程序中。
MVC将应用程序的用户界面分为三个主要部分:
- 模型:一组类,描述了要处理的数据以及修改和操作数据的业务规则。
- 视图:定义应用程序用户界面的显示方式。
- 控制器:一组类,用于处理来自用户、整个应用程序流以及特定应用程序逻辑的通信。
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
- ASP.NET MVC是ASP.NET技术的子集。
- ASP.NET MVC在ASP.NET核心基础之上构建:
- 依赖于HttpHandler,如请求是如何进入控制器的。
- 依赖于Session、Cookie、Cache、Application等状态保持机制。
- 使用HttpContext、Request、Response、Server等对象。
- 在Controller使用智能感知很容易得到这些对象。
- .NET中编写Web程序的一种可选方式。
2、ASP.NET MVC和WebForms
- ASP.NET MVC和WebForm都是.NET中开发Web程序的一种方式,两者是一种并列的关系。
- WebForm的特点:
- 所见即所得,开发傻瓜式:服务器端控件、事件模型、状态管理。
- 借鉴了Winform的成功特色。
- 偏离了Web请求处理的原理(请求->处理->响应)。
- ASP.NET MVC的特点:
- 关注分离:
- WebForm只是把一个页面分成了前置页面和后置代码,分离的不够彻底。
- MVC可以把一个页面分成Controller、View、Model三部分,分离的更彻底。
- 测试性强。可以针对Controller、View、Model单独进行测试。
- 更加接近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简介的更多相关文章
- MVC教程一:MVC简介
一.概述 1.MVC是一种流行的Web应用架构技术,他把Web应用划分成Model(模型).Controller(控制器)和View(视图)三部分. 2.优点:可测试.可维护 3.MVC是ASP.NE ...
- ASP.NET MVC 5 01 - ASP.NET概述
本篇目录: ASP.NET 概述 .NET Framework 与 ASP.NET ASP.NET MVC简介 ASP.NET的特色和优势 典型案例 ▁▃▅ ASP.NET概述 ▅▃▁ 目前开发B/S ...
- ASP.NET MVC 5 02 - ASP.NET MVC 1-5 各版本特点
参考书籍:<ASP.NET MVC 4 高级编程>.<ASP.NET MVC 5 高级编程>.<C#高级编程(第8版)>.<使用ASP.NET MVC开发企业 ...
- ASP.NET MVC 随想录—— 使用ASP.NET Identity实现基于声明的授权,高级篇
在这篇文章中,我将继续ASP.NET Identity 之旅,这也是ASP.NET Identity 三部曲的最后一篇.在本文中,将为大家介绍ASP.NET Identity 的高级功能,它支持声明式 ...
- ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇
在前一篇文章中,我介绍了ASP.NET Identity 基本API的运用并创建了若干用户账号.那么在本篇文章中,我将继续ASP.NET Identity 之旅,向您展示如何运用ASP.NET Ide ...
- (转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性
转发:微软MVP 卢建晖 的文章,希望对大家有帮助.原文:http://blog.csdn.net/kinfey/article/details/44459625 编者语 : 昨晚写好的文章居然csd ...
- Asp.Net MVC<二> : IIS/asp.net管道
MVC是Asp.net的设计思想,而IIS/asp.net是它的技术平台.理解ASP.NET的前提是对ASP.NET管道式设计的深刻认识.而ASP.NET Web应用大都是寄宿于IIS上的. IIS ...
- 关于html、asp、php模板引擎、aspnet mvc、REST的一点思考
先看我对REST的一点认识,下面是<rest实战> 这本书的序言文字: 在我刚刚开始从事解决计算问题的时候,业界就有很多人有一个愿望:将系统设计为能够被自由组合的组件.互联网(I ...
- ASP.NET MVC中使用ASP.NET AJAX异步访问WebService
使用过ASP.NET AJAX的朋友都知道,怎么通过ASP.NET AJAX在客户端访问WebService,其实在ASP.NET MVC中使用ASP.NET AJAX异步访问WebService 也 ...
随机推荐
- IT兄弟连 HTML5教程 响应式网站的内容设计
基于响应式开发网站,除了页面的布局是我们设计的重点,网站中显示的图片和文字也是我们不能轻视的内容. 1 响应式图片显示内容设计 真正具有响应性的Web设计是完全调整网站以满足访问者的设备.我们需要在 ...
- SSM项目整合纪实
一 前 言 本来是为了探究一些功能性问题,需要一套完整的项目架构,本以为SSM用过那么多了,轻松搭建不在话下,但是过程中还是遇到一些问题,踩到一些未曾料想的坑.博文以搭建极简架构为目的,附带一些关键阐 ...
- Java工作流引擎表单引擎之JS表单字段输入脚本验证
关键字: 表单设计器, 字段验证. workflow,ccform, ccBPM. 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流bpm工作流系统 java工作流 ...
- 【iOS翻译】对UIGestureRecognizer多种手势傻傻分不清
UIGestureRecognizerDelegate A set of methods implemented by the delegate of a gesture recognizer to ...
- Linux kernel中常见的宏整理
0x00 宏的基本知识 // object-like #define 宏名 替换列表 换行符 //function-like #define 宏名 ([标识符列表]) 替换列表 换行符 替换列表和标识 ...
- Cocos Creator 资源加载流程剖析【三】——Load部分
Load流程是整个资源加载管线的最后一棒,由Loader这个pipe负责(loader.js).通过Download流程拿到内容之后,需要对内容做一些"加载"处理.使得这些内容可以 ...
- ReactNative: 使用弹出框组件ActionSheetIOS组件
一.简介 在上一篇文章中,详细介绍了对话框组件,除此之外,React-Native系统还给开发者提供了一个弹框框组件ActionSheetIOS组件,它的弹出方式与对框框不同,它是从底部弹出,与iOS ...
- PHP最新面试题2019
1.字符串"0"在PHP和js中转换为布尔值是false还是true php:false; php 弱语言 '0'和0一样: js:true:字符串除了空字符串('')其他都是t ...
- Laravel 框架对于分表进行统计合并查询的思路
当对数据表进行水平分表之后,若要进行数据统计,往往需要对所有分表一起进行联合查询.在使用 Laravel 框架时,可以利用 Model 类的 setTable 方法对于多个表进行合并查询. 举个例子, ...
- Prometheus学习系列(七)之Prometheus PromQL说明
前言 本文来自Prometheus官网手册1.2.3 和 Prometheus简介1.2.3 PromQL操作符 一.二元操作符 Prometheus的查询语言支持基本的逻辑运算和算术运算.对于两个瞬 ...