ASP.NET MVC案例教程(基于ASP.NET MVC beta)—第三篇:ASP.NET MVC全局观

前言

在上一篇文章中,我们实现了第一个ASP.NET MVC页面。对于没有接触过这个框架的朋友来说,可能对有些地方会迷惑,所以这 篇文章我将通过图示配合文字的方法,站在全局的角度介绍一些ASP.NET MVC的运行机制,这样可以帮助朋友们更好的理解后续文章。 ^_^

全局

首先我们来看一副图片,由于这幅图是我自己画的,不是摘自微软官方,所以如果有什么不到位的地方还望海涵!

首先,用户通过Web浏览器向服务器发送一条 url请求,这里请求的url不再是xxx.aspx格式,而是http://HostName/ControllerName/ActionName/Parameters的样子。这个请求被ASP.NET MVC的路由映射系统截获。(路由映射可以在Global.asax中配置,我们一会再说)路由映射系统按照映射规则,解析出控制器名 ControllerName,Action名ActionName和各个参数Parameters,然后,找寻Controllers目录下的ControllerNameController.cs这个控制器类 ,默认情况下,系统总是找寻Controllers目录下的“控制器名+Controller”这么一个类,然后,找寻这个类下与ActionName同名 的方法,找到后,将Parameters作为参数传给这个方法,而后Action方法开始执行,完成后返回相应视图,默认情况下,会返回Views目录下与 ControllerName同名的目录下的与ActionName同名的aspx文件,并且将ViewData传递到视图。ViewData中一般包含了控制视图显示的控制量以 及视图显示需要的数据。

我们按以上思路回顾一下上一篇中主页的请求过程。我们传递的url是http://localhost/Home/Index。默认路 由规则下,将ControllerName设为“Home”,ActionName设为“Index”,没有参数。于是系统找寻Controllers目录下 的HomeController类的Index方法,成功找到,于是执行之。这个方法调用Mock的Model取出一些数据,放入ViewData相应键值项里。然后返回 视图,返回的是Views下Home下的Index.aspx。这个视图取出ViewData中的数据按照一定格式呈现,于是完成了一次典型的ASP.NET MVC调用。

路由

从上面可以看出,ASP.NET MVC中路由是很重要的。它直接决定了如何解析url,因此决定了系统如何工作。那么,下面我 们来揭开路由神秘的面纱。

打开我们Demo下的Global.asax.cs文件,可以看到如下代码:

Global.asax.cs:

1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Web;
5using System.Web.Mvc;
6using System.Web.Routing;
7
8namespace MVCDemo
9{
10  // Note: For instructions on enabling IIS6 or IIS7 classic mode,
11  // visit http://go.microsoft.com/? LinkId=9394801
12
13  public class MvcApplication : System.Web.HttpApplication
14  {
15    public static void RegisterRoutes(RouteCollection routes)
16    {
17      routes.IgnoreRoute("{resource}.axd/ {*pathInfo}");
18
19      routes.MapRoute(
20        "Default",                        // Route name
21        "{controller}/{action}/{id}",               // URL with parameters
22        new { controller = "Home", action = "Index", id = "" } // Parameter defaults
23      );
24
25    }
26
27    protected void Application_Start()
28    {
29      RegisterRoutes(RouteTable.Routes);
30    }
31  }
32}

时间: 2024-10-22 20:38:12

ASP.NET MVC案例教程(基于ASP.NET MVC beta)—第三篇:ASP.NET MVC全局观的相关文章

ASP.NET MVC案例教程(基于ASP.NET MVC beta)—第七篇:闲话ASP.NET MVC

摘要 本文作为<ASP.NET MVC案例教程>的完结篇,仅从个人角度,发表一些对ASP.NET MVC框架的看法.并且在最后会附上本系列文章的Demo下 载. 前言 写这篇文章的目的,是想总结一些东西,以帮助朋友们更好的使用这个框架.但是,我又不像把官方列举的哪些优势.功能翻译过来列举在 这里.所以,我想干脆我就纯从个人观点上对这个框架评论一下吧.说的不好的,不对的还请批评指正.^_^ ASP.NET MVC--螺旋进步的产物 对于微软为什么要推出ASP.NET MVC,我们是无从得知的,也

第三篇 ASP基础

本文 ASP 篇 (1) 展示了 ASP 动态网站设计的一些最基本的方法,相信通过实践各位对 ASP 已经有了最基本的了解,本篇在答复大家所提问题的同时,将进一步介绍 ASP 动态网站的一些基本技巧. 自本文第一篇刊登后 , 络绎不绝地收到了一些朋友的来信,出乎作者的意料,其中有相当一部分是初次接触 ASP ,因此有许多朋友都提出为何在浏览器中浏览 ASP 篇 (1) 中的范例时看到的竟然是原代码?由于遇到此问题的朋友较多,故作者在此一并回答.首先,我要再次强调 ASP 是一套服务器端的脚本环境

ASP基础入门第三篇(ASP脚本基础)_应用技巧

下面就先请大家跟我来学习一些ASP 中应用脚本语言(以VBScript 为主)的基础知识. 在开始学习脚本语言之前,你应该理解一些简单的概念 -- 变量.进程.所谓变量是计算机内存中已命名的存储位置,其中包含了数字或字符串等数据,它使用户便于理解脚本操作的名称,为用户提供了一种存储.检索和操作数据的途径.程序是由一个或多个进程组成的,在 VBScript 中,进程就是"指令块",通常意义上的进程,如 Sub,只是为了简单的数据处理. 在 VBScript 中,严格的来讲变量是不用声明的

ASP基础入门第三篇(ASP脚本基础)

下面就先请大家跟我来学习一些ASP 中应用脚本语言(以VBScript 为主)的基础知识. 在开始学习脚本语言之前,你应该理解一些简单的概念 -- 变量.进程.所谓变量是计算机内存中已命名的存储位置,其中包含了数字或字符串等数据,它使用户便于理解脚本操作的名称,为用户提供了一种存储.检索和操作数据的途径.程序是由一个或多个进程组成的,在 VBScript 中,进程就是"指令块",通常意义上的进程,如 Sub,只是为了简单的数据处理. 在 VBScript 中,严格的来讲变量是不用声明的

ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第一篇:准备工作

前言 ASP.NET MVC作为微软官方的MVC解决方案,推出有一段时间了.可以说自动推出以来,一直广受关注.在经历了漫长的Preview 之后,前几天终于推出了其beta版.并且在官方文档中,微软声明最终的正式版与beta版相比不会有大的变化.所以,对于.NET平台的开发人 员来说,是时候学习ASP.NET MVC了. 本系列文章作为一个ASP.NET MVC的入门教程,将不会长篇大论介绍其中的概念及理论.而是通过 案例实践来学习ASP.NET MVC.在这系列文章中我将逐步完成一个"公告发布

ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第六篇:拦截器

摘要 本文将对"MVC公告发布系统"的发布公告功能添加日志功能和异常处理功能,借此来讨论ASP.NET MVC中拦截器的使用方法. 一个小难题 我们继续完善"MVC公告发布系统",这次,我们的需求是对公告发布功能添加日志记录能力,即在发布公告前,记录一次,在 公告发布成功后,再记录一次.然后还要使得其具备异常处理,即当业务组件出现问题时,跳转到相应的错误页面并显示相应提示. 有 人可能笑了,这有什么难的,在DoRelease这个Action的开始和结束处各加入相应日

ASP.NET MVC案例教程(基于ASP.NET MVC beta)—第五篇:MVC整合Ajax

摘要 本文将从完成"输入数据验证"这个功能出发,逐渐展开ASP.NET MVC与Ajax结合的方法.首先,本文将使用ASP.NET MVC提供的同步方式完 成数据验证.而后,将分别结合ASP.NET AJAX和JQuery将这个功能重构成异步形式. 数据验证 在上一篇文章中,我们完成了发布公告的功能.但是从健壮性角度看,这个功能并不完善,因为一般情况下,我们输入的数据要符合一定的 约束条件,例如,在我们的例子中,我们至少不能将空字符串作为标题或内容吧.下面,我们来为程序加入数据验证功能

ASP.NET MVC案例教程(基于ASP.NET MVC beta)—第四篇:传递表单数据

前言 通过前几篇文章,我们已经能比较自如的使用ASP.NET MVC来呈现页面和数据了.但是,有一个大问题没有解决:如何处理表单 数据.例如,我们将要实现的公告发布功能,用户肯定是在某个表单页面输入标题.正文等内容,而后提交,然后表单数据要被传递到相应的 地方交由业务逻辑组件处理. 在传统的ASP.NET下,使用的是Model1模式,每个aspx页面有一个同名的aspx.cs文件,当提交表单时,默 认数据被提交到这个同名aspx.cs文件中某个方法下处理.但是,在ASP.NET MVC中,这种方

ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第二篇:第一个页面

让第一个页面跑起来 现在,我们来实现公告系统中的第一个页面--首页.它非常简单,只包括所有公告分类的列表, 并且每个列表项是一个超链接.其中分类数据是用我们的Mock组件得到的.实现后界面如下: 在开始之前,我们要删几个东西.因为默认情况下建立一个MVC项目时里面包含了几 个示例页面,我们要做的就是: 1.将Controllers文件夹下所有文件删除. 2.将Views文件夹下除了Shared文件夹和Web.config 外的所有文件删除,然后将Shared文件夹里面的文件删除. 完成以上几步后