【ASP.NET专题】(1)——ASP.NET MVC初探

ASP.NET MVC项目搭建 ASP.NET MVC项目搭建 asp.net mvc是基于ASP.NET Web应用程序的框架,其将项目分为Model、View和Controller,将各层代码分离,使得项目易于维护,减少项目之间的耦合。 一.打开Visual Studio,点击菜单【文件】-》【新建】-》【项目】 二. 在“新建项目”界面: 1.选择左侧的【Web】模板; 2.选择右侧的ASP.NET Web 应用程序; 3.输入项目名称、选择位置、解决方案名称; 4.点击确定按钮,进入下一步界面; 三. 选择 阅读详情

ASP.NET MVC Framework是微软官方提供的MVC模式编写ASP.NET Web应用程序的一个框架.已于2009年3月19日正式发布. MVC(Model-View-Controller)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller). 既然是一个优秀的框架,那么就值得去学习一把,网上搜索了许多资料,希望对于MVC的学习有帮助。

目前官方已经公布了ASP.NET MVC 2 RC,但是推荐大家还是先把1.0学好,因为一切都是相通的。

一、学习资料

1、http://www.asp.net/mvc/:这肯定是最权威的指导,它提供了MVC的下载、解释了什么是MVC、也教会了我们如何去使用MVC。如果英文还好的话建议通过官方文档学习。

2、http://kb.cnblogs.com/zt/mvc/:博客园提供的ASP.NET MVC技术专题。这里有许多国内的大牛写一些学习笔记,相信有很多是可以把大家引入门的。同时也衷心希望CSDN也把相关专题做出来。

3、http://www.baidu.com/s?wd=asp.net+mvc&oq=asp.&f=3&rsp=1:"百度:asp.net mvc"最直接的学习方式。

4、http://www.cnblogs.com/WizardWu/archive/2009/04/18/1438809.html:一个网友写的《快速弄懂ASP.NET MVC》

5、http://www.cnblogs.com/zhangziqiu/archive/2009/02/27/ASPNET-MVC-1.html:一个网友写的《从0开始学习ASP.NET MVC》

二、ASP.NET MVC 1.0浅析

2.1 MVC的组成

Models:访问数据库,装载数据、处理业务逻辑。在项目中体现为数据实体类加业务代理类。
Views:显示数据,用户界面。在项目中体现为aspx页面,偶尔可以加上code-behind。
Controller:按路由规则将请求的数据传送给指定页面,用于显示;也可以把用户输入的数据传递给逻辑处理类。它可以包含简单的验证逻辑。不应包含数据访问逻辑。

MVC架构的运作方式如图0所示。

图0 MVC架构运作方式

2.2 为何使用MVC

提出MVC的目的无非是提高开发效率、提高可测试性。官方的ASP.NET MVC 1.0指南中指出(以下简称指南),基于MVC的Web应用程序有如下优点:
1、对复杂的程序管理更方便
It makes it easier to manage complexity by dividing an application into the model, the view, and the ontroller.

2、在开发上有更高的可控性
It does not use view state or server-based forms. This makes the MVC framework ideal for developers who want full control over the behavior of an application.
3、Routing使软件设计有更多灵活性
It uses a Front Controller pattern that processes Web application requests through a single controller. This enables you to design an application that supports a rich routing infrastructure.
4、更加适合测试驱动开发
It provides better support for test-driven development (TDD).
5、团队开发项目中有更高的可控性
It works well for Web applications that are supported by large teams of developers and Web designers who need a high degree of control over the application behavior.
同时MVC框架还有以下特点:
1、将应用程序分成各个组成部份,更有利于测试。MVC框架是基于接口的,这样可以利用MOCK方式来替换你的实际类;做单元测试的时候,也可以不运行Contrllers,这样的测试就更快更灵活。
2、MVC框架是可扩展的,你可以自己设计并替换视图引擎、URL导向规则、Action的参数序列等等。同时MVC框架也支持依赖注入和控制反转,你可以从外部注入实例,而不用让类自己创建实例,你还可以通过配置文件的方式创建实例,这样使得测试更方便。
3、强大的URL映射组件使得你的应用程序的URL更易理解,同时具备搜索能力。你的URL不必包括文件路径,这样的设计很适合自定义查询引擎和REST架构。
4、MVC框架仍然支持ASP.NET中的页面、用户控件、母版页作为视图的模板;同时你也还可以使用嵌套母版页、行内表达式(in-line expressions<%= %>)、服务器端控件、模板、数据绑定、本地化等等属于ASP.NET已有的东西。
5、同时ASP.NET中的FORM验证、Windows验证、URL授权、Membership、角色、输出、数据缓存、Session、Profile 状态管理、配置、Provider框架等特性在MVC框架中仍然是可用的。

小结:ASP.NET MVC 1.0框架是基于ASP.NET的,所以他包括了ASP.NET中的几乎所有特性。同时他为设计人员提供了一套测试的方案(当然这是所有语言平台MVC模式的共性)。在安装了框架的VS2008中还增加了不少功能,可以方便地添加Views、Models、Controllers。

2.3 与三层结构的ASP.NET应用程序比较

与普通ASP.NET比较而言,最大的区别还是在于前台开发,后台包括的数据库访问、逻辑处理与以往的方式没有明显区别,在MVC框架中,这些统称为Model。而三层结构中,这些可以称为数据访问层与逻辑处理层。
1、页面开发
用这种模式开发的站点,光看页面的代码的确比以往少一些,但它更多地使用了页面脚本(<% ... %>)用于显示数据。在指南中并未提到不推荐使用服务器端控件,但是它提供了大量的HTML HELPER,而且还允许你自己添加Helper,比如DataGridHelper,所以在MVC框架中使用这些Helper会更方便些,不过这对于熟练工来说应该影响不大,因为实际开发中我们更多使用的是Ctrl+C/Ctrl+V,复制几个标签和复制几个Helper方法所花的时间差不多。可能对于新手来说,如果对标签不熟悉的话,用这些Helper的速度会快些,但是这样会影响新手掌握标签,真是矛盾呐。
2、数据提交
普通的ASP.Net开发,在提交数据的时候可能还需要通过设置数据绑定,或者在code-behind里写封装代码;而在MVC中,框架自动帮助你将页面上填写的数据封装到事先指定的Model中,数据提交操作在MVC框架挺方便。而且在普通ASP.NET页面中,经常会出现某个属性无法绑回去的情况,这点在MVC中应该可以得到解决。指南中提到了Routing的使用使得MVC框架下的应用程序在操作自定义查询时变得更方便,实际上在查询方面跟普通方式并没有多大区别,都是对封装好的类进行解析。至于“URL更容易理解”,现在应用程序都是从界面上点击来实现操作,很少有人会关注URL本身吧,所以这个优点不算优点。
3、单元测试
从测试上讲,MVC框架确实做得不错,若用MOCK方式测试可以更方便,一个好的WEB应用程序设计就应该将页面呈现与逻辑分开,这点普通ASP.NET应用程序也是可以做到的,关键在于设计。
4、其它
MVC框架在验证、母版页这些地方有几个新特性,但与普通ASP.NET的方式大同小异,因此不仔细说了。

2.4 小结

总的来讲,微软的 ASP.NET MVC Framework 是为了让 ASP.NET 更适合中、大型的项目,能统一规划、控管整个网站系统的流程 (用 Controller 处理),并更有效地分工开发、日后维护 (避免许多 WebForm 里重复出现相同功能的自定义函数)、管控某个功能在修改后对系统整体的影响,并将不同的功能作更明确地切割,让不同专长的技术人员各司其职,也顺便提高了代码的可读性,便于测试 (TDD, test -driven development) (减少直接绑到用户界面中的代码量),并达到「松散耦合 (loosely coupled)」,让组件易于更换和重复使用。但也因此,ASP.NET 程序员必须先改变过去,把很多业务逻辑、输入验证、页面切换…等杂七杂八的功能,全部写在 Code-Behind (aspx.cs) 里的旧习惯。

三、使用ASP.NET MVC前的准备工作

本节主要介绍下载MVC源码以及如何搭建开发环境。注意:你的PC机必须安装好了VS 2008

1、首先去官网下载ASP.NET MVC,目前最新版本为2.0,但是对于我初学而言,我决定下载1.0进行学习测试。网址为:http://www.asp.net/mvc/download/

2、下载后的文件为AspNetMVC1.msi,直接点击下一步即可。

3、然后启动2008,点击新建项目->选择Visual C#->选择Web->选择ASP.NET MVC Web Application,自己取个项目名称就可以了(具体如下图所示)。

image

图1 新建MVC应用程序

其在 VS 解决方案的结构如下图所示:

image 

图2 解决方案结构

4、点击【确定】即创建了一个默认的MVC项目.同时还会创建一个测试项目(你也可以选择不创建), 直接将Web项目中的default.aspx设置为启动页, 运行项目, 一个ASP.NET MVC的项目已经运行在我的电脑上了(具体如下图所示)。

image

图3 浏览主页

5、看到该页面的时候,恭喜你,环境搭建成功了。当然目前还不理解为什么用MVC,后面的章节将会介绍如何利用ASP.NET MVC来协助自己。 

四、ASP.NET MVC解析

如下图4所示。注意当你点击Home或者About的时候,浏览器地址为:http://localhost:1750/或者http://localhost:1750/Home/About,具体原因本章节将会慢慢解释。

图4 MVC项目首页(注意浏览器地址)

事实上该页的内容,是去捉 Views/Home 文件夹底下,的 Index.aspx 的内容来呈现。其由 Global.asax.cs 配置,并用了「URL 重写 (Url Routing)」,让用户可以按你自己定义的的规则来访问网站。

在图 3 首页的右侧,会有两个 hyperlink,可分别导向「LogOn.aspx」、「About.aspx」页面;但 hyperlink 要导向哪一个页面,不是写死在 View 的页面中 (已无 Code-Behind),而是统一由 Global.asax.cs 去定义 Routing rules,去解析当浏览器收到 URL、表单或任何 request 时,应该要扔给哪一个 Controller 自定义类去处理;再由该个被指定的 Controller (如上图2 里默认自动产生的 HomeController.cs),里面所定义的一或多个 System.Web.Mvc.ActionResult 类,以及 View 方法 (术语叫 action method),去设定要把 UI render 回哪一个 View (页面) 去,也就是本文一开始所提到的 (如图0所示),Model 2 架构是由 Controller 文件,去统一控管整个 ASP.NET 系统的流程、页面导向,而不是写死在各个 aspx.cs 文件里。
以下为 Global.asax.cs 的一部分代码,网友们可搭配参考上图2里 Controller、View 的结构去阅读:

MapRoute 方法里的三个参数,分别代表:route name、URL、Parameter。其中第一个参数 "Default",代表了项目中的 Default.aspx (不是位于 View 文件夹里)。这个 URL Routing 是为了解决用户直接访问域名时,会出现找不到文件的情形,所以要采用这个方法,将主页改成 Routing 到 Home/Index 上。因此当您在浏览器的地址栏输入:

http://localhost:端口号/Default.aspx

http://localhost:端口号

亦会导至图2中的 Views/Home/Index.aspx。

在图4的首页里,当鼠标移到右侧的 hyperlink 时,实际连结的页面名称 (某个 .aspx) 并不会直接显示在浏览器的地址栏、浏览器下方的信息栏里,因为 request「转向」的运作皆统一由 Controller 处理,亦即由图 2 中 HomeController.cs 里,配置的 System.Web.Mvc.ActionResult 类的 actionName 去指定,因此浏览器的网址仍会维持 Site.Master (MasterPage) 里的 Html.ActionLink 绑定,所配置的 actionName (即下方两行代码的第二个参数 "Index"、"About"),而不会如过去 ASP.NET 1.x / 2.0 般,直接在地址栏里,显示某一个 .aspx 的页面名称。

以下为 Site.master 的代码:

Controller 除了用来控管整个网站的流程转向外,事实上还能避免大量的代码重复,亦即统一处理一些系统可「共享」的功能,例如:验证用户身份、输入验证 (validate)、Session 管理,或是像购物网站中,当购物车里物品的添加、修改、移除时,任何用户皆相同的「共通逻辑」处理;以及要结帐时,去做购物数量、单价相乘的计算动作,或将某个存储购物明细的 Collection 数据结构对象加入 Session,最后再转向某一个页面 (View)。

也许你对于本文讲解的概念有些模糊,下面我们看看简单的程序是怎么写的,我们打开Controller/HomeController.cs,代码如下:

请大家从上述代码中体会一下View/Action/Controller的关系。

现存有个问题,我如果想看到Index.aspx和About.aspx的页面我们应该怎么办呢? 

ASP.NET MVC4】第一课:初识ASP.NET MVC,创建第一个ASP.NET MVC项目 知识点:理解ASP.NET MVC 阅读详情

相关推荐

Professional ASP.NET MVC 1.0 (Wrox Programmer to Programmer)

Wrox Press, 2009 he ASP.NET MVC framework is designed from the ground up with certain core principles in mind-extensibility, testability, and separation of concerns. The framework adds various conventions into the mix to help drive developers into the "Pit of Success," providing for a streamlined development experience that fits the way the web works. For developers who like to peel away layers of abstraction and get their hands closer to the metal, the ASP.NET MVC framework might be for you. For developers who are extremely particular about how their frameworks should be put together, ASP.NET MVC is also extremely extensible, allowing nearly any part of it to be customized or even swapped out entirely in favor of something that fits the developer's own tastes.

微软开源asp.net MVC

微软开发部门副总裁Scott Guthrie宣布,ASP.NET MVC及相关项目将在Apache许可证下开源,托管在CodePlex上。ASP.NET MVC是微软的Web应用程序框架,早在2009年已宣布开源,但采用的是微软公共许可证MS-PL。 在MS-PL许可证下,所有人都可以阅读源代码,但无权提出修改建议或贡献代码,对微软的决定构不成任何影响。但在新的开源开发模式下,开发者可以...

www.v5qq.com的技术博客 235

asp.netMVC1.0

asp.net MVC 1.0英文说明书及代码实例

ASP.NET MVC 安装使用教程

ASP.NET MVC开发入门指南:从安装到部署 摘要:本文系统介绍了ASP.NET MVC开发框架的基础知识和实践操作。主要内容包括:ASP.NET MVC框架概述、Razor视图引擎的使用、开发环境搭建(.NET SDK和Visual Studio安装)、项目创建与结构解析、控制器与视图的编写、模型绑定与表单处理等核心功能。同时提供了项目部署方法和常见问题解答,推荐了官方文档等学习资源。文章涵盖从零开始创建ASP.NET MVC应用到部署上线的完整流程,适合开发者快速入门ASP.NET MVC开发。

真正的大师永远怀着一颗学徒的心 1434

C#、ASP.NETASP.NET MVCASP.NET web form、asp.net core mvc的区别。哦我的上帝啊!这可真糟糕

微软的命名很糟糕。技术上有两个框架ASP.NETASP.NET Core,它们分别基于.NET Framework和.NET Core构建。 当Microsoft首次尝试创建一个遵循MVC模式的“现代”Web应用程序平台时,它将这个新平台称为“ASP.NET MVC”,以区别于以前的ASP.NET应用程序(主要是Web Forms)。然后,为了更加混淆事情,他们后来添加了“ASP.NET We...

菜鸟变凤凰 2431

ASP.NET MVC企业级程序设计 第1初探asp.net mvc

一、ASP.NET MVC简介 1、为什么需要MVC设计模式(ASP.NET WebForm的缺点) 1)后端程序逻辑与前端UI高耦合 2)视图状态管理等机制导致网络带宽占用增加 2、适用场景: 1ASP.NET WebForm适用于基于局域网的web应用程序(ERP, HR, CRM等企业内部管理系统) 2) ASP.NET MVC适用于基于因特网、高并发的中、大型web应用程序(门户网站、电商等) 3、主要概念: 1)组成:Model(模型)、View(视图)和Controller(控制器) Mod

高瑜的博客 3000

一文讲懂C#、ASP.NETASP.NET MVCASP.NET web form、asp.net core mvc的区别

一文讲懂C#、ASP.NETASP.NET MVCASP.NET web form、asp.net core mvc的区别

Blue 4479

ASP.NET——MVC编程

如何使用 C# 中的 MVC 模式去开发一个简单的 Web 应用程序,将业务逻辑、用户界面和请求处理清晰地分离,提高开发效率和代码的可维护性。根据需要,可以进一步扩展和优化该示例,添加更多的功能和页面。

2401_84642440的博客 2337

ASP.NET学习】ASP.NET MVC基本编程

在 Web.config 文件中,可以定义与应用程序有关的各种设置,包括连接字符串、验证模式、HTTP 模块、错误处理、会话状态、缓存设置等等。在这个文件夹里存放的是用于呈现数据模型的视图页面,可以包含 HTML、CSS、JavaScript等内容,用于呈现和渲染用户界面。由于常用字体可能会在用户的系统中缺少,因此,网站通常会将自定义字体文件包括在 Fonts 文件夹中,以确保字体在用户设备中正确地显示。它是轻量级的、可测试性高的框架,同时整合了所有已有的 ASP.NET 特性,比如母版页、安全性和认证。

杰西笔记 1819

asp.net mvc 学习总结

自学MVC看这里——全网最全ASP.NET MVC 教程汇总 http://www.cnblogs.com/powertoolsteam/archive/2015/08/13/4667892.html MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC。小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口。本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp

Tusk_Act4的博客 2590

ASP.NET MVC

ViewStart.cshtml是一个全局的布局文件,程序中每个.cshtml页面都会默认使用_ViewStart提供的布局。同时.NET Framework 提供了多种技术框架ASP.NET MVC.NET Framework提供的众多技术框架中的一种,用于开发Web应用。ASP.NET MVC框架使用了约定大于配置的思想,按照框架约定的结构组织文件,浏览器请求某个Controller方法时,该方法默认返回与方法同名的.cshtml文件,浏览器接收.cshtml并渲染页面。.cshtml文件同名。

weixin_47249500的博客 1126

自学MVC看这里——全网最全ASP.NET MVC 教程汇总

MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC。小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口。本文从Why,What,How三个角度整理MVC 的学习资源,让学习者第一时间找到最有价值的文章,获取最彻底的ASp.NET MVC 框架知识,Let’s go!   1. Why :为什么

kong1940742529的博客 5969

ASP.NET MVC 入门

入门基础 ASP.NET MVC 是微软系列基于 C# 语言的 Web 开发框架,并不适合 0 基础入门,在学习之前你必须要了解 4 个知识点: 1、HTML 基础。网页的基本标签,结合 ASP.NET MVC 自带的 HTML 辅助方法来开发网页。 2、CSS 基础。修改页面样式,使得页面看起来更美观。 3、JavaScript 基础。和用户进行交互,表单验证是最基本的。 4、C# 基础语法。...

码农在途的博客 1111

初探ASP.NET MVC

1.1.1 ASP.NET MVC 主要概念 MVC是一种软件设计模式。 组成:Model(模型)、View(视图)和Controller(控制器) 作用:用户接口和逻辑层相互分离,以便开发人员更好地关注逻辑层的设计和测试,并使整个程序具备清晰的架构 Model 模型是实现应用程序数据域逻辑的应用程序组件,通常被称为“数据模型”。模型对象会检索模型状态并将其存储在数据库中. Controller 控制器是处理用户交互、使用模型并选择视图来显示界面的组件。在 MVC 应用程序中,视图仅显示界面;控制器则用于处

weixin_43377805的博客 259

ASP.NET MVC源代码下载。

http://aspnet.codeplex.com/ 现在最高版本ASP.NET MVC 3.0   http://aspnet.codeplex.com/wikipage?title=MVC&referringTitle=Home ASP.NET MVC ASP.NET MVC is a free, fully supported Microsoft framework fo

蓝叶菱的专栏 3875

初探 Asp.net MVC3

Asp.net MVC 3已经发布有一段时间了,加入了Razor视图引擎,使用起来感觉好了很多。 首先安装 VS2010(各种版本都行) 使用Web Platform Installer安装Asp.net MVC 新建一个Asp.net MVC 3的Web Application 首先,我们选择一个Internet Application,下面可以选择视图引擎,选择 Razor,来看看Razor引擎吧。 工程建好了,先看下目录结构,还是跟之前的版本一致,Models Views

Dove's Notes On Programming 1639

ASP.NET MVC简介

ASP.NET MVC是一种构建web应用程序的框架,它将一般的MVC模式应用于ASP.NET 框架。那么,如何看待asp.net框架asp.net mvc之间的关系呢?在asp.net 1.0发布时,asp.net和web from被人们看成是同一事物,尽管当时(2002)asp.net已经支持两层抽象,即ui层(web from层,由服务器控件和ViewState等组成);web层(管道程序...

Abel_01_xu的博客 866
上一篇: 【PHP系列教程】(6)——PHP中的表达式
下一篇: 【ASP.NET专题】(2)——15分钟利用ASP.NET MVC 创建Movie数据库应用程序
爱因斯坦.薛
博客等级 码龄21年 313粉丝 265原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值