ASP.NET MVC5(一):ASP.NET MVC概览

ASP.NET MVC概览


ASP.NET MVC是一种构建Web应用程序的框架,它将一般的MVC(Model-View-Controller)模式应用于ASP.NET框架。

ASP.NET MVC模式简介

MVC将Web应用程序划分为三个主要的部分,以下是MSDN给出的定义:

  • 模型(Model):模型对象是实现应用程序数据域逻辑的应用程序部件。 通常,模型对象会检索模型状态并将其存储在数据库中。 例如,Product 对象可能会从数据库中检索信息,操作该信息,然后将更新的信息写回到 SQL Server 数据库内的 Products 表中。
  • 视图(View):视图是显示应用程序用户界面 (UI) 的组件。 通常,此 UI 是用模型数据创建的。 Products 表的编辑视图便是一个视图示例,该视图基于 Product 对象的当前状态显示文本框、下拉列表和复选框。
  • 控制器(Controller):控制器是处理用户交互、使用模型并最终选择要呈现的视图来显示 UI 的组件。 在 MVC 应用程序中,视图仅显示信息;控制器则用于处理和响应用户输入和交互。 例如,控制器处理查询字符串值,并将这些值传递给模型,而模型可能会使用这些值来查询数据库。

 

ASP.NET MVC的发展历程

首先,我们以一张时间轴线图开始,了解一下ASP.NET MVC的发展历程。

  • 2007年2月,Microsoft公司的Scott Guthrie在旅途中草拟了ASP.NET MVC的内核程序。经过9个预览版本,于2009年3月13日,正式发布ASP.NET MVC1官方版本。
  • 时隔一年,ASP.NET MVC2于2010年3月发布,部分主要特征如下:
    • 带有自定义模板的UI辅助程序
    • 在客户端和服务员基于特性的模型验证
    • 强类型的HTML辅助程序
    • 改善的Visual Studio开发工具
    • 支持将大型应用程序划分为域
    • 支持异步控制器
    • 使用Html.RenderAction支持渲染网页或网站的某一部分
    • 新的辅助函数、使用工具和API增强
  • 10个月后,ASP.NET MVC3正式推出,部分主要特征如下:
    • 支持Razor视图引擎
    • 支持.NET4数据注解
    • 改进了模型验证
    • 提供更强的控制和更大的灵活性,支持依赖项解析(Dependency Resolution)和全局操作过滤器(Global Action Filter)
    • 丰富的JavaScript支持,其中包括非侵入式JavaScript、jQuery验证和JSON绑定
    • 支持NuGet,可以用来发布软件,管理整个平台的依赖
  • 12年9月,ASP.NET MVC4正式发布,新增功能主要包括:
    • ASP.NET Web API
    • 增强了默认的项目模板
    • 添加使用jQuery Mobile的手机项目模板
    • 支持显示模式(Display Mode)
    • 支持异步控制器的任务
    • 捆绑和微小(minification)
  • 2013年10月,ASP.NET MVC5与Visual Studio 2013一起发布,下面列出了一些主要特征:
    • One ASP.NET
    • 新的Web项目体验
    • ASP.NET Identity
    • Bootstrap模板
    • 特性路由
    • ASP.NET基架
    • 身份验证过滤器
    • 过滤器重写

 

创建ASP.NET MVC5应用程序

本节主要讲解如何使用Visual Studio快速创建ASP.NET MVC5应用程序,所有截图均使用Visual Studio 2015,步骤如下:

  1. 选择File|New|Project选项。
  2. 在New Project对话框左侧的Installed|Templates|Visual C#列表下,选中Web选项,选择ASP.NET Web Application,将应用程序命名为MyFirstMvcProject,点击OK按钮。
  3. 在弹出的New ASP.NET Project对话框中,选中MVC模板,点击OK按钮。
  4. 至此,一个新的MVC项目已经创建完成,在应用程序根目录下包含Project_Readme.html文件,创建项目时将自动显示这个文件。

 

ASP.NET MVC应用程序结构

新的MVC项目创建完成后,会自动向这个项目中创建一些目录,下表介绍了这些目录的主要用途。

目录用途
App_Data用于存储想要读取/写入的数据文件
App_Start用于保存一些功能的配置代码
Content用于保存CSS、图像和其他站点内容
Controllers用于保存处理URL请求的控制器类
fonts用于保存Bootstrap模板系统包含的一些自定义Web字体
Models用于保存表示和操纵数据以及业务对象的类
Scripts用于保存JavaScript库文件和脚本
Views用于保存负责呈现输出结果的UI模板文件

 

ASP.NET MVC的约定

在默认情况下,ASP.NET MVC应用程序对约定的依赖性很强,这样就避免了开发人员配置和指定一些项,因为这些项可以根据约定来推断。这个概念通常被称为“习惯优于配置(convention over configration)”
ASP.NET MVC对于程序结构的约定如下:
  1. 每个Controller类的名字以Controller结尾,保存在Controller目录中。
  2. 应用程序的所有视图放在单独的Views目录下。
  3. 控制器使用的视图是在Views主目录下的,与控制器名称相同的子目录中。

 

总结


本章为此系列的第一篇,主要介绍了ASP.NET MVC的总体结构、发展历程以及如何在Visual Studio中快速创建一个ASP.NET MVC应用程序。下一篇,将详细介绍控制器、视图以及模型等相关内容。

转载于:https://www.cnblogs.com/yujihaia/p/7367567.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android休眠后恢复线程,关于Android系统休眠后,线程的执行情况

理论上,android系统休眠后,app进程会被挂起,所以相关的执行线程也会被挂起,那些java线程的操作例如:wait,await,sleep,循环阻塞,handler的delay,线程池的delay操作都会被…

1011 A+B 和 C (15 分)

1011 AB 和 C (15 分) 给定区间 [−2 ​31 ​​ ,2 ​31 ​​ ] 内的 3 个整数 A、B 和 C,请判断 AB 是否大于 C。 输入格式: 输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,…

java-上传文件与现实上传文件

项目结构: 项目展示: 数据库: /* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.5.53 : Database - fileupload ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE*…

1012 数字分类 (20 分)

1012 数字分类 (20 分) 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A ​1 ​​ 能被 5 整除的数字中所有偶数的和; A ​2 ​​ 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n ​1 ​…

BZOJ2948 : [Poi2001]绿色游戏

维护一个保护集合$S$,表示哪些点$A$可能胜利。 首先将所有绿点加入$S$。 $1.$对于一个不在$S$的$A$点,若它存在某个后继在$S$中,则将其加入$S$。 $2.$对于一个不在$S$的$B$点,若它所有后继都在$S$中,则将其加入$S$。 通…

登录微信用android设备,Android 之微信登录

准备工作需要在微信开放平台注册登录账户。还得办理开发者资质认证,审核费用为300元。2.在微信开放平台创建移动应用,填写相关信息后提交审核。简述业务流程1.获取appId和secret2.通过appId和secret调微信接口获取 code3.通过code和getAccessToken()方法…

1013 数素数 (20 分)

1013 数素数 (20 分) 令 P ​i ​​ 表示第 i 个素数。现任给两个正整数 M≤N≤10 ​4 ​​ ,请输出 P ​M ​​ 到 P ​N ​​ 的所有素数。 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔。 输出格式: 输出从 P ​M ​​…

《浅谈CT》总结

注明来自 http://www.ssdfans.com/?p1941 这里说的CT,不是医院里面的CT,而是闪存的一种技术:Charge Trap。 闪存不只有Floating Gate,还有Charge Trap。 浮栅极材料是导体,一般为多晶硅。 CTF(Charge Trap…

android可见区域,识别目标View在HorizontalScrollView可见区域

完成需求的时候涉及到这个所以撸了一下本文章是本人原创,转载请带原地址连接先放效果图(霁雪清虹"是目标):首先需要一个自定义HorizontalScrollView,复写一个View的onScrollChanged方法,用于监听滑动变化代码如下&#xff1a…

1015 德才论 (25 分)

1015 德才论 (25 分) 宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之&#xff0c…

AI单挑Dota 2世界冠军:被电脑虐哭……

OpenAI的机器人刚刚在 Dota2 1v1 比赛中战胜了人类顶级职业玩家 Denti。以建设安全的通用人工智能为己任的 OpenAI,通过“Self-Play”的方式,从零开始训练出了这个机器人。 Dota2沦陷 继横扫顶级的人类国际象棋大师和围棋大师后,计算机如今在…

用session实现html登录页面跳转页面跳转页面跳转,js判断登录与否并确定跳转页面的方法...

这篇文章主要介绍了js判断登录与否并确定跳转页面的方法,涉及Ajax及session使用的技巧,非常具有实用价值,需要的朋友可以参考下本文实例讲述了js判断登录与否并确定跳转页面的方法。分享给大家供大家参考。具体如下:使用session存储,确定用户是否登录&am…

7-26 Windows消息队列(25 分)

7-26 Windows消息队列(25 分) 消息队列是 Windows 系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不…

Java——操作集合的工具类:Collections

Java 提供了一个操作 Set 、List 和 Map 等集合的工具类 :Collections,该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作 转载于:https://www.cnblogs.com/szj-ang/p/7383027.html

鸿蒙关键技术研究,华为鸿蒙 2.0 系统主题演讲公布,详细架构 9 月 11 日揭晓

IT之家 8 月 30 日消息 华为 9 月 10 日将举行华为开发者大会 2020,华为官网表示,“我们将与您分享 HMS Core 5.0 最新进展, 揭开 HarmonyOS 和 EMUI 11 的神秘面纱。 振奋人心的新技术,深入的交流学习机会, 更灵动的想…

shell 提示符个性化设置

提示符具体含义可参考: http://billie66.github.io/TLCL/book/zh/chap14.html Ubuntu16.04个人配置如下,供以后查阅 1 function git_branch {2 branch"git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //""3…

如何设置鼠标滚轮html,win7如何设置鼠标滚轮

你们知道在W7中怎么设置鼠标的滚轮吗?下面是小编带来的关于win7如何设置鼠标滚轮的内容,欢迎阅读!Win7设置滚轮方法一:首先要在电脑的左下角点击开始按钮点击开始按钮以后出现上拉菜单,在菜单上面点击控制面板点击控制面板以后进入到控制面板…

湛江高考2021成绩查询,2021广东省高中学业水平考试成绩查询(入口+方式)

2021年广东高中学业水平合格性考试成绩查询查询方式:考生登录广东省教育考试服务中心的广东教育考试服务网,通过综合查询栏目页面,按相关提示即可查询考试成绩。查询入口二:“广东省教育考试院”小程序查询方式:①在“…

A. Red and Blue Beans

题意&#xff1a;红豆子和绿豆子分在不同的篮子里。问最小的最大差是能不能比给的d小。 方法&#xff1a;尽可能用更多的篮子里。 #include<iostream> using namespace std; int main() {double a,b,k;int n;cin>>n;for (int i0;i<n;i){cin>>a>>b&…

JAVA经典算法40题

【程序1】 题目&#xff1a;古典问题&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第四个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子总数为多少&#xff1f; 1.程序分析&#xff1a; 兔子…