了解模型視圖和控制器_第1頁(yè)
了解模型視圖和控制器_第2頁(yè)
了解模型視圖和控制器_第3頁(yè)
了解模型視圖和控制器_第4頁(yè)
了解模型視圖和控制器_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、了解模型、視圖和控制器不太了解模型、視圖和控制器?在本教程中,Stephen Walther 將向您介紹 ASP.NET MVC 應(yīng)用程序的不同部分。了解模型、視圖和控制器本教程對(duì) ASP.NET MVC 的模型、視圖和控制器提供了高層面的概述。換句話說(shuō),它解釋了 ASP.NET MVC 中的 M、V和C。閱讀本教程后,您將會(huì)了解 ASP.NET MVC 應(yīng)用程序的不同部分如何協(xié)同工作。您還將了解 ASP.NET MVC 應(yīng)用程序的層次結(jié)構(gòu)與 ASP.NET Web Forms 應(yīng)用程序或 Active Server Pages 應(yīng)用程序?qū)哟谓Y(jié)構(gòu)的不同之處。示例 ASP.NET MVC 應(yīng)用程

2、序用于創(chuàng)建 ASP.NET MVC Web 應(yīng)用程序的默認(rèn) Visual Studio 模板包括一個(gè)非常簡(jiǎn)單的示例應(yīng)用程序,可以使用該應(yīng)用程序了解 ASP.NET MVC 應(yīng)用程序的各個(gè)不同部分。在本教程中,我們將利用這個(gè)簡(jiǎn)單的應(yīng)用程序。通 過(guò)啟動(dòng) Visual Studio 2008 并選擇菜單項(xiàng) File,New Project,使用 ASP.NET MVC 模板可以創(chuàng)建新的 ASP.NET MVC 應(yīng)用程序(如圖 1 所示)。在 New Project 對(duì)話框中,在 Project Types 下選擇自己偏愛的編程語(yǔ)言(Visual Basic 或 C#),然后在 Templates 下

3、選擇 ASP.NET MVC Web Application。單擊 OK 按鈕。圖 1:New Project 對(duì)話框(單擊查看大圖)在創(chuàng)建新的 ASP.NET MVC 應(yīng)用程序時(shí),將出現(xiàn) Create Unit Test Project 對(duì)話框(如圖 2 所示)。通過(guò)這個(gè)對(duì)話框可以在自己的解決方案中創(chuàng)建單獨(dú)的項(xiàng)目,以測(cè)試 ASP.NET MVC 應(yīng)用程序。選擇選項(xiàng) No, do not create a unit test project,然后單擊OK按鈕。圖 2:創(chuàng)建 Unit Test 對(duì)話框(單擊查看大圖)創(chuàng) 建新的 ASP.NET MVC 應(yīng)用程序后,您將可以在 Solution E

4、xplorer 窗口中看到若干個(gè)文件夾和文件。具體地說(shuō),您將可以看到三個(gè)文件夾,名稱分別為 Models、Views 和 Controllers??梢詮奈募A名稱中猜出,這些文件夾包含用于實(shí)現(xiàn)模型、視圖和控制器的文件。如果展開 Controllers 文件夾,則應(yīng)該看到名稱為 HomeController.cs 的文件。如果展開 Views 文件夾,則應(yīng)該看到兩個(gè)名稱為 Home 和 Shared 的子文件夾。如果展開 Home 文件夾,則將看到兩個(gè)其他的文件,名稱為About.aspx和Home.aspx(如圖 3 所示)。這些文件組成了默認(rèn) ASP.NET MVC 模板中包含的示例應(yīng)用程序

5、。通過(guò)選擇菜單選項(xiàng) Debug, Start Debugging,可以運(yùn)行示例應(yīng)用程序。也可以按 F5 鍵運(yùn)行。在第一次運(yùn)行 ASP.NET 應(yīng)用程序時(shí),將出現(xiàn)圖 4 中的對(duì)話框,建議啟用調(diào)試模式。單擊 OK 按鈕運(yùn)行應(yīng)用程序。圖 4:Debugging Not Enabled 對(duì)話框(單擊查看大圖)在 運(yùn)行 ASP.NET MVC 應(yīng)用程序時(shí),Visual Studio 將在 Web 瀏覽器中啟動(dòng)應(yīng)用程序。示例應(yīng)用程序由兩個(gè)頁(yè)面組成:Index 頁(yè)面和 About 頁(yè)面。當(dāng)應(yīng)用程序第一次啟動(dòng)時(shí),將出現(xiàn) Index 頁(yè)面(如圖 5 所示)。通過(guò)單擊應(yīng)用程序右上方的菜單鏈接可以導(dǎo)航至 About

6、 頁(yè)面。圖 5:Index 頁(yè)面(單擊查看大圖)請(qǐng)注意瀏覽器地址欄中的 URL。在單擊 Home 菜單鏈接時(shí),瀏覽器地址欄中的 URL 更改為 /Home。在單擊 About 菜單鏈接時(shí),瀏覽器地址欄中的 URL 更改為 /About。如果關(guān)閉瀏覽器窗口并返回 Visual Studio,則找不到名稱為 Home 或 About 的文件。這些文件不存在。這是怎么回事呢?URL 和頁(yè)面并不是對(duì)等的在 構(gòu)建傳統(tǒng)的 ASP.NET Web Forms 應(yīng)用程序或 Active Server Pages 應(yīng)用程序時(shí),URL 和頁(yè)面是一一對(duì)應(yīng)的。如果從服務(wù)器上請(qǐng)求名稱為 SomePage.aspx 的頁(yè)

7、面,則硬盤上最好有名稱為 SomePage.aspx 的頁(yè)面。如果 SomePage.aspx 文件不存在,則將出現(xiàn) 404 Page Not Found 錯(cuò)誤。相反,在構(gòu)建 ASP.NET MVC 應(yīng)用程序時(shí),在瀏覽器地址欄中鍵入的 URL 和應(yīng)用程序中的文件不存在對(duì)應(yīng)關(guān)系。在 ASP.NET MVC 應(yīng)用程序中,URL 對(duì)應(yīng)的是控制器操作,而不是硬盤上的頁(yè)面。在 傳統(tǒng)的 ASP.NET 或 ASP 應(yīng)用程序中,瀏覽器請(qǐng)求是映射到頁(yè)面上的。在 ASP.NET MVC 應(yīng)用程序中,瀏覽器請(qǐng)求是映射到控制器操作的。ASP.NET Web Forms 應(yīng)用程序關(guān)注的是內(nèi)容。相反,ASP.NET M

8、VC 應(yīng)用程序關(guān)注的是應(yīng)用程序邏輯。 了解 URL 路由瀏覽器請(qǐng)求通過(guò)一項(xiàng)名為 URL 路由的 ASP.NET MVC 功能映射到控制器操作。URL 路由將進(jìn)入的請(qǐng)求發(fā)送給控制器操作。URL 路由使用路由表處理進(jìn)入的請(qǐng)求。此路由表在應(yīng)用程序第一次啟動(dòng)時(shí)創(chuàng)建。路由表在 Global.asax 文件中設(shè)置。默認(rèn)的 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);                  當(dāng) ASP.NET 應(yīng)用程序第一次啟動(dòng)時(shí),調(diào)用 Application_Start() 方法。在程序清單 1 中,該方法調(diào)用 RegisterRoutes() 和 RegisterRoutes() 方

15、法創(chuàng)建默認(rèn)的路由表。默認(rèn)的路由表中包含一個(gè)路由。該默認(rèn)路由將所有進(jìn)入的請(qǐng)求拆分為三個(gè)單元(URL 單元是正斜杠之間的所有內(nèi)容)。第一個(gè)單元映射到控制器名稱,第二個(gè)單元映射到操作名稱,最后一個(gè)單元映射到傳遞給操作名稱 ID 的參數(shù)。 例如,考慮下面的 URL:/Product/Details/3 此 URL 被解析為如下三個(gè)部分:Controller = ProductControllerAction = DetailsId = 3請(qǐng)注意,前綴控制器被附加到控制器參數(shù)的末端。這只是 MVC 的一個(gè)特殊之處。默認(rèn)路由包括所有三個(gè)單元的默認(rèn)值。默認(rèn)控制器是 HomeController,默認(rèn)操作是

16、Index,而默認(rèn) ID 是一個(gè)空字符串。請(qǐng)觀察這些默認(rèn)值,考慮如何解析下面的 URL:/Employee此 URL 被解析為如下三個(gè)參數(shù):Controller = EmployeeControllerAction = IndexId = “”最后,如果打開 ASP.NET MVC 應(yīng)用程序而不提供任何 URL(例如 http:/localhost/),那么 URL 將被解析為:Controller = HomeControllerAction = IndexId = “”請(qǐng)求將被發(fā)送到 HomeController 類上的 Index() 操作。了解控制器控制器負(fù)責(zé)控制用戶與 MVC 應(yīng)用程

17、序的交互方式??刂破鳑Q定在用戶發(fā)出瀏覽器請(qǐng)求時(shí)向用戶發(fā)送什么樣的響應(yīng)??刂破髦皇且粋€(gè)類(例如,Visual Basic 或 C# 類)。示例 ASP.NET MVC 應(yīng)用程序包括一個(gè)名稱為 HomeController.cs 的控制器,該控制器位于 Controllers 文件夾內(nèi)。HomeController.cs 的內(nèi)容如程序清單 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. 請(qǐng)注意,HomeController 有兩個(gè)方法,名稱為 Index() 和 About()。這兩個(gè)方法對(duì)應(yīng)于控制器公開的兩個(gè)操作。U

23、RL /Home/Index 調(diào)用 HomeController.Index() 方法,而 URL /Home/About 調(diào)用 HomeController.About() 方法??刂破髦械娜魏喂卜椒ǘ甲鳛榭刂破鞑僮鞅还_。請(qǐng)小心對(duì)待它們。這意味著通過(guò)向?yàn)g覽器輸入正確的 URL 來(lái)訪問 Internet 的任何人都可以激活包含在控制器中的任何公共方法。了解視圖由 HomeController 類公開的兩個(gè)控制器方法 Index() 和 About() 都返回了一個(gè)視圖。視圖包括發(fā)送到瀏覽器的 HTML 標(biāo)記和內(nèi)容。在使用 ASP.NET MVC 應(yīng)用程序時(shí),視圖就等于頁(yè)面。必須在正確的位置

24、創(chuàng)建視圖。HomeController.Index() 操作返回位于以下路徑的視圖:ViewsHomeIndex.aspxHomeController.About() 操作返回位于以下路徑的視圖:ViewsHomeAbout.aspx總之,如果要為控制器操作返回視圖,則需要在 Views 文件夾中使用與控制器相同的名稱創(chuàng)建子文件夾。在子文件夾中,必須創(chuàng)建與控制器操作名稱相同的 .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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論