版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、了解模型、视图和控制器不太了解模型、视图和控制器?在本教程中,Stephen Walther 将向您介绍 ASP.NET MVC 应用程序的不同部分。了解模型、视图和控制器本教程对 ASP.NET MVC 的模型、视图和控制器提供了高层面的概述。换句话说,它解释了 ASP.NET MVC 中的 M、V和C。阅读本教程后,您将会了解 ASP.NET MVC 应用程序的不同部分如何协同工作。您还将了解 ASP.NET MVC 应用程序的层次结构与 ASP.NET Web Forms 应用程序或 Active Server Pages 应用程序层次结构的不同之处。示例 ASP.NET MVC 应用程
2、序用于创建 ASP.NET MVC Web 应用程序的默认 Visual Studio 模板包括一个非常简单的示例应用程序,可以使用该应用程序了解 ASP.NET MVC 应用程序的各个不同部分。在本教程中,我们将利用这个简单的应用程序。通 过启动 Visual Studio 2008 并选择菜单项 File,New Project,使用 ASP.NET MVC 模板可以创建新的 ASP.NET MVC 应用程序(如图 1 所示)。在 New Project 对话框中,在 Project Types 下选择自己偏爱的编程语言(Visual Basic 或 C#),然后在 Templates 下
3、选择 ASP.NET MVC Web Application。单击 OK 按钮。图 1:New Project 对话框(单击查看大图)在创建新的 ASP.NET MVC 应用程序时,将出现 Create Unit Test Project 对话框(如图 2 所示)。通过这个对话框可以在自己的解决方案中创建单独的项目,以测试 ASP.NET MVC 应用程序。选择选项 No, do not create a unit test project,然后单击OK按钮。图 2:创建 Unit Test 对话框(单击查看大图)创 建新的 ASP.NET MVC 应用程序后,您将可以在 Solution E
4、xplorer 窗口中看到若干个文件夹和文件。具体地说,您将可以看到三个文件夹,名称分别为 Models、Views 和 Controllers。可以从文件夹名称中猜出,这些文件夹包含用于实现模型、视图和控制器的文件。如果展开 Controllers 文件夹,则应该看到名称为 HomeController.cs 的文件。如果展开 Views 文件夹,则应该看到两个名称为 Home 和 Shared 的子文件夹。如果展开 Home 文件夹,则将看到两个其他的文件,名称为About.aspx和Home.aspx(如图 3 所示)。这些文件组成了默认 ASP.NET MVC 模板中包含的示例应用程序
5、。通过选择菜单选项 Debug, Start Debugging,可以运行示例应用程序。也可以按 F5 键运行。在第一次运行 ASP.NET 应用程序时,将出现图 4 中的对话框,建议启用调试模式。单击 OK 按钮运行应用程序。图 4:Debugging Not Enabled 对话框(单击查看大图)在 运行 ASP.NET MVC 应用程序时,Visual Studio 将在 Web 浏览器中启动应用程序。示例应用程序由两个页面组成:Index 页面和 About 页面。当应用程序第一次启动时,将出现 Index 页面(如图 5 所示)。通过单击应用程序右上方的菜单链接可以导航至 About
6、 页面。图 5:Index 页面(单击查看大图)请注意浏览器地址栏中的 URL。在单击 Home 菜单链接时,浏览器地址栏中的 URL 更改为 /Home。在单击 About 菜单链接时,浏览器地址栏中的 URL 更改为 /About。如果关闭浏览器窗口并返回 Visual Studio,则找不到名称为 Home 或 About 的文件。这些文件不存在。这是怎么回事呢?URL 和页面并不是对等的在 构建传统的 ASP.NET Web Forms 应用程序或 Active Server Pages 应用程序时,URL 和页面是一一对应的。如果从服务器上请求名称为 SomePage.aspx 的页
7、面,则硬盘上最好有名称为 SomePage.aspx 的页面。如果 SomePage.aspx 文件不存在,则将出现 404 Page Not Found 错误。相反,在构建 ASP.NET MVC 应用程序时,在浏览器地址栏中键入的 URL 和应用程序中的文件不存在对应关系。在 ASP.NET MVC 应用程序中,URL 对应的是控制器操作,而不是硬盘上的页面。在 传统的 ASP.NET 或 ASP 应用程序中,浏览器请求是映射到页面上的。在 ASP.NET MVC 应用程序中,浏览器请求是映射到控制器操作的。ASP.NET Web Forms 应用程序关注的是内容。相反,ASP.NET M
8、VC 应用程序关注的是应用程序逻辑。 了解 URL 路由浏览器请求通过一项名为 URL 路由的 ASP.NET MVC 功能映射到控制器操作。URL 路由将进入的请求发送给控制器操作。URL 路由使用路由表处理进入的请求。此路由表在应用程序第一次启动时创建。路由表在 Global.asax 文件中设置。默认的 MVC Global.asax 文件包含在程序清单 1 中。程序清单 1 Global.asax1. using System;2. using 3. using System.Linq;4. using System.Web;5. using
9、160;6. using 7. 8. namespace MvcApplication19. 10. public class GlobalApplication : 11. 12. public static void RegisterRoutes(Rou
10、teCollection routes)13. 14. routes.IgnoreRoute("resource.axd/*pathInfo");15.
11、0; routes.MapRoute(16. "Default",17. "controller/action/id",18. &
12、#160; new controller = "Home", action = "Index", id = ""19.
13、0; );20. 21. 22. protected void Application_Start()23.
14、160; RegisterRoutes(RouteTable.Routes); 当 ASP.NET 应用程序第一次启动时,调用 Application_Start() 方法。在程序清单 1 中,该方法调用 RegisterRoutes() 和 RegisterRoutes() 方
15、法创建默认的路由表。默认的路由表中包含一个路由。该默认路由将所有进入的请求拆分为三个单元(URL 单元是正斜杠之间的所有内容)。第一个单元映射到控制器名称,第二个单元映射到操作名称,最后一个单元映射到传递给操作名称 ID 的参数。 例如,考虑下面的 URL:/Product/Details/3 此 URL 被解析为如下三个部分:Controller = ProductControllerAction = DetailsId = 3请注意,前缀控制器被附加到控制器参数的末端。这只是 MVC 的一个特殊之处。默认路由包括所有三个单元的默认值。默认控制器是 HomeController,默认操作是
16、Index,而默认 ID 是一个空字符串。请观察这些默认值,考虑如何解析下面的 URL:/Employee此 URL 被解析为如下三个参数:Controller = EmployeeControllerAction = IndexId = “”最后,如果打开 ASP.NET MVC 应用程序而不提供任何 URL(例如 http:/localhost/),那么 URL 将被解析为:Controller = HomeControllerAction = IndexId = “”请求将被发送到 HomeController 类上的 Index() 操作。了解控制器控制器负责控制用户与 MVC 应用程
17、序的交互方式。控制器决定在用户发出浏览器请求时向用户发送什么样的响应。控制器只是一个类(例如,Visual Basic 或 C# 类)。示例 ASP.NET MVC 应用程序包括一个名称为 HomeController.cs 的控制器,该控制器位于 Controllers 文件夹内。HomeController.cs 的内容如程序清单 2 所示。程序清单 2 HomeController.cs1. using System;2. using 3. using System.Linq;4. using System.Web;5. using 6.
18、 7. namespace MvcApplication1.Controllers8. 9. public class HomeController : Controller10. 11. public ActionResult Index(
19、)12. 13. ViewData"Title" = "Home Page"14. &
20、#160; ViewData"Message" = "Welcome to ASP.NET MVC!"15. return View();16. 17. 18.
21、160; public ActionResult About()19. 20. ViewData"Title" = "Abo
22、ut Page"21. return View();22. 23. 24. 请注意,HomeController 有两个方法,名称为 Index() 和 About()。这两个方法对应于控制器公开的两个操作。U
23、RL /Home/Index 调用 HomeController.Index() 方法,而 URL /Home/About 调用 HomeController.About() 方法。控制器中的任何公共方法都作为控制器操作被公开。请小心对待它们。这意味着通过向浏览器输入正确的 URL 来访问 Internet 的任何人都可以激活包含在控制器中的任何公共方法。了解视图由 HomeController 类公开的两个控制器方法 Index() 和 About() 都返回了一个视图。视图包括发送到浏览器的 HTML 标记和内容。在使用 ASP.NET MVC 应用程序时,视图就等于页面。必须在正确的位置
24、创建视图。HomeController.Index() 操作返回位于以下路径的视图:ViewsHomeIndex.aspxHomeController.About() 操作返回位于以下路径的视图:ViewsHomeAbout.aspx总之,如果要为控制器操作返回视图,则需要在 Views 文件夹中使用与控制器相同的名称创建子文件夹。在子文件夹中,必须创建与控制器操作名称相同的 .aspx 文件。程序清单 3 中的文件包含 About.aspx 视图。程序清单 3 About.aspx1. <% Page Language="C#" Mas
25、terPageFile="/Views/Shared/Site.Master"2. AutoEventWireup="true" CodeBehind="About.aspx.cs" Inherits="MvcApplication1.Views.Home.About"%>3. 4. <asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server">5. <h2>About Us</h2>6. <p>7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 儿科护理与儿科再生医学
- 2026广东阳江阳春市人民医院招聘53人笔试参考题库及答案解析
- 2026年上海市针灸经络研究所公开招聘工作人员考试备考题库及答案解析
- 2026上半年新疆维吾尔自治区事业单招聘4474人笔试模拟试题及答案解析
- 2026河南洛阳市涧西实验初级中学春季招聘3人考试参考试题及答案解析
- 2026广东广州市天河区东明荔园小学招聘数学实习老师1人笔试参考题库及答案解析
- 2026台州市产品质量安全检测研究院编外招聘3人笔试参考题库及答案解析
- 互联网就业指导主播培训
- 2026中国科学院地理科学与资源研究所特别研究助理(博士后)招聘笔试参考题库及答案解析
- 2025年郑州医药健康职业学院单招职业技能考试题库及答案解析
- 成人有创机械通气气道内吸引技术操作解读-
- 标志桩安装质量评定表
- 初高中数学衔接讲义
- 装配式支吊架试验方法标准
- 安徽杭富固废环保有限公司10万吨工业废物(无机类)资源化利用及无害化处置项目环境影响报告书
- 多学科设计优化综述
- mcn机构的通讯录
- 卫星导航系统课程教学大纲
- 刑法学(上册)马工程课件 第3章 刑法的效力
- JJF 1015-2014计量器具型式评价通用规范
- (5年高职)网络信息编辑实务教学课件汇总完整版电子教案全书课件(最新)
评论
0/150
提交评论