MVC3.0进阶——MVC框架和应用程序结构(三)

来源:互联网 发布:手机淘宝怎样买火车票 编辑:程序博客网 时间:2024/05/22 02:04
 

ASP.NET 应用程序和MVC框架的RUL请求差别

在ASP.NET网站中,URL 通常映射到存储在磁盘上的文件(通常为.aspx 文件)。这些.aspx 文件包括经过处理以响应请求的标记和代码。

ASP.NET MVC 框架将 URL 映射到不同于 ASP.NET Web 窗体页面的服务器代码。该框架会将 URL 映射到 controller 类,而不是将URL 映射到ASP.NET页面或处理程序。Controller 类将处理传入的请求,如用户输入和交互,并根据用户输入执行相应的应用程序和数据逻辑。Controller 类通常会调用一个生成 HTML 输出作为响应的单独视图组件。

MVC应用程序结构概述

ASP.NET MVC 框架会将模型、视图和控制器组件分开。 模型表示应用程序的业务/域逻辑,通常具有数据库支持的数据。视图由控制器进行选择,并呈现相应的 UI。默认情况下,ASP.NET MVC 框架使用现有的ASP.NET 页面(.aspx)、母版页(.master) 和用户控件(.ascx) 类型呈现到浏览器。控制器将在自身中查找相应的操作方法,获取要用作操作方法参数的值,并处理可能会在运行操作方法时发生的任何错误。然后,它将呈现请求的视图。默认情况下,每组组件都位于 MVC Web 应用程序项目的单独文件夹中。

URL 路由

ASP.NET MVC 框架将使用 ASP.NET 路由引擎,通过该引擎可以灵活地将 URL 映射到 controller 类。 我们可以定义 ASP.NET MVC 框架使用的路由规则,以评估传入的 URL 以及选择相应的控制器。 我们还可以让该路由引擎自动分析 URL 中定义的变量,并让 ASP.NET MVC 框架将值作为参数自变量传递给控制器。

MVC 框架和回发

ASP.NET MVC 框架不使用 ASP.NET Web 窗体回发模型与服务器交互, 而是会将所有最终用户交互路由到 controller 类。 这样可使 UI 逻辑与业务逻辑保持分开并有助于提高可测试性。 因此,ASP.NET 视图状态和 ASP.NET Web 窗体页面生命周期事件不会与基于 MVC 的视图集成。

MVC 项目模
  • ASP.NET MVC 框架包括 Visual Studio 项目模板,该模板可帮助您创建为支持 MVC 模式而构造的 Web 应用程序。 此模板可创建一个新的 MVC Web 应用程序,该应用程序被配置为具有必需的文件夹、项模板和配置文件项。
  • 创建新 MVC Web 应用程序时,Visual Studio 可让您选择同时创建两个项目。 第一个项目是 Web 项目,您将在该项目中实现应用程序。 第二个项目是单元测试项目,您可以在该项目中为第一个项目中的 MVC 组件编写单元测试。
  • Microsoft Visual Studio 标准版和 Microsoft Visual Web Developer 速成版不支持创建单元测试项目。
Web 应用程序 MVC 项目结构

创建 ASP.NET MVC Web 应用程序项目时,MVC 组件会按项目文件夹分开,如下图所示:

 

默认情况下,MVC 项目包括以下文件夹:

  • App_Data,这是数据的物理存储区。 此文件夹的作用与它在使用 Web 窗体页面的 ASP.NET 网站中的作用相同。

  • Content,建议在此位置添加内容文件,如级联样式表文件、图像等。 通常,Content 文件夹用于存储静态文件

  • Controllers,建议在此位置存储控制器。MVC 框架要求所有控制器的名称均以“Controller”结尾,如 HomeController、LoginController 或 ProductController。

  • Models,这是为表示 MVC Web 应用程序的应用程序模型的类提供的文件夹。此文件夹通常包括定义对象以及定义与数据存储交互所用的逻辑的代码。 通常,数据模型对象将位于单独的类库中。 但是,在创建新应用程序时,您可以将类放在此处,然后在开发周期中稍后的某个时刻将其移动到单独的类库中。

  • Scripts,建议在此位置存储支持应用程序的脚本文件。 默认情况下,此文件夹包含 ASP.NET AJAX 基础文件和 jQuery 库。

  • Views,建议在此位置存储视图。 视图使用 ViewPage (.aspx)、ViewUserControl (.ascx) 和 ViewMasterPage (.master) 文件,以及与呈现视图相关的任何其他文件。 在 Views 文件夹中,每个控制器都具有一个文件夹;该文件夹以控制器名称前缀命名。 例如,如果控制器名为 HomeController,则 Views 文件夹包含名为 Home 的文件夹。 默认情况下,当 ASP.NET MVC 框架加载视图时,它将在“Views\控制器名称”文件夹中寻找具有请求的视图名称的 ViewPage (.aspx) 文件。 默认情况下,Views 文件夹中也有一个名为 Shared 的文件夹,但该文件夹不与任何控制器相对应。 Shared 文件夹用于存储在多个控制器之间共享的视图。 例如,我们可以将 Web 应用程序的母版页放在 Shared 文件夹中。

除了使用前面列出的文件夹之外,MVC Web 应用程序还使用 Global.asax 文件中的代码来设置全局 URL 路由默认值,并且使用 Web.config 文件来配置应用程序。

 

原创粉丝点击