日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

了解模型、视图和控制器

發布時間:2024/4/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 了解模型、视图和控制器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

了解模型、視圖和控制器

本教程對 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 應用程序

用于創建 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 下選擇 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 Explorer 窗口中看到若干個文件夾和文件。具體地說,您將可以看到三個文件夾,名稱分別為 Models、Views 和 Controllers。可以從文件夾名稱中猜出,這些文件夾包含用于實現模型、視圖和控制器的文件。

如果展開 Controllers 文件夾,則應該看到名稱為 HomeController.cs 的文件。如果展開 Views 文件夾,則應該看到兩個名稱為 Home 和 Shared 的子文件夾。如果展開 Home 文件夾,則將看到兩個其他的文件,名稱為About.aspxHome.aspx(如圖 3 所示)。這些文件組成了默認 ASP.NET MVC 模板中包含的示例應用程序。

通過選擇菜單選項 Debug, Start Debugging,可以運行示例應用程序。也可以按 F5 鍵運行。

在第一次運行 ASP.NET 應用程序時,將出現圖 4 中的對話框,建議啟用調試模式。單擊 OK 按鈕運行應用程序。

圖 4:Debugging Not Enabled 對話框單擊查看大圖

在運行 ASP.NET MVC 應用程序時,Visual Studio 將在 Web 瀏覽器中啟動應用程序。示例應用程序由兩個頁面組成:Index 頁面和 About 頁面。當應用程序第一次啟動時,將出現 Index 頁面(如圖 5 所示)。通過單擊應用程序右上方的菜單鏈接可以導航至 About 頁面。

圖 5:Index 頁面單擊查看大圖

請注意瀏覽器地址欄中的 URL。在單擊 Home 菜單鏈接時,瀏覽器地址欄中的 URL 更改為 /Home。在單擊 About 菜單鏈接時,瀏覽器地址欄中的 URL 更改為 /About

如果關閉瀏覽器窗口并返回 Visual Studio,則找不到名稱為 Home 或 About 的文件。這些文件不存在。這是怎么回事呢?

URL 和頁面并不是對等的

在構建傳統的 ASP.NET Web Forms 應用程序或 Active Server Pages 應用程序時,URL 和頁面是一一對應的。如果從服務器上請求名稱為 SomePage.aspx 的頁面,則硬盤上最好有名稱為 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 MVC 應用程序關注的是應用程序邏輯。

了解 URL 路由

瀏覽器請求通過一項名為 URL 路由的 ASP.NET MVC 功能映射到控制器操作。URL 路由將進入的請求發送給控制器操作。

URL 路由使用路由表處理進入的請求。此路由表在應用程序第一次啟動時創建。路由表在 Global.asax 文件中設置。默認的 MVC Global.asax 文件包含在程序清單 1 中。

程序清單 1 Global.asax

using?System;using?System.Collections.Generic;using?System.Linq;using?System.Web;using?System.Web.Mvc;using?System.Web.Routing;?namespace?MvcApplication1{?????public?class?GlobalApplication?:?System.Web.HttpApplication?????{??????????public?static?void?RegisterRoutes(RouteCollection?routes)??????????{???????????????routes.IgnoreRoute("{resource}.axd/{*pathInfo}");???????????????routes.MapRoute(???????????????"Default",???????????????"{controller}/{action}/{id}",???????????????new?{?controller?=?"Home",?action?=?"Index",?id?=?""}???????????????);??????????}???????????protected?void?Application_Start()???????????{????????????????RegisterRoutes(RouteTable.Routes);???????????}??????}?}

當 ASP.NET 應用程序第一次啟動時,調用 Application_Start() 方法。在程序清單 1 中,該方法調用 RegisterRoutes()RegisterRoutes() 方法創建默認的路由表。

默認的路由表中包含一個路由。該默認路由將所有進入的請求拆分為三個單元(URL 單元是正斜杠之間的所有內容)。第一個單元映射到控制器名稱,第二個單元映射到操作名稱,最后一個單元映射到傳遞給操作名稱 ID 的參數。

例如,考慮下面的 URL:

/Product/Details/3

此 URL 被解析為如下三個部分:

Controller = ProductController

Action = Details

Id = 3

請注意,前綴控制器被附加到控制器參數的末端。這只是 MVC 的一個特殊之處。

默認路由包括所有三個單元的默認值。默認控制器是 HomeController,默認操作是 Index,而默認 ID 是一個空字符串。請觀察這些默認值,考慮如何解析下面的 URL:

/Employee

此 URL 被解析為如下三個參數:

Controller = EmployeeController

Action = Index

Id = “”

最后,如果打開 ASP.NET MVC 應用程序而不提供任何 URL(例如 http://localhost/),那么 URL 將被解析為:

Controller = HomeController

Action = Index

Id = “”

請求將被發送到 HomeController 類上的 Index() 操作。

了解控制器

控制器負責控制用戶與 MVC 應用程序的交互方式。控制器決定在用戶發出瀏覽器請求時向用戶發送什么樣的響應。

控制器只是一個類(例如,Visual Basic 或 C# 類)。示例 ASP.NET MVC 應用程序包括一個名稱為 HomeController.cs 的控制器,該控制器位于 Controllers 文件夾內。HomeController.cs 的內容如程序清單 2 所示。

程序清單 2 HomeController.cs

using?System;using?System.Collections.Generic;using?System.Linq;using?System.Web;using?System.Web.Mvc;????namespace?MvcApplication1.Controllers{?????public?class?HomeController?:?Controller?????{??????????public?ActionResult?Index()??????????{???????????????ViewData["Title"]?=?"Home?Page";???????????????ViewData["Message"]?=?"Welcome?to?ASP.NET?MVC!";???????????????return?View();??????????}???????????public?ActionResult?About()??????????{???????????????ViewData["Title"]?=?"About?Page";???????????????return?View();??????????}?????}}

請注意,HomeController 有兩個方法,名稱為 Index()About()。這兩個方法對應于控制器公開的兩個操作。URL /Home/Index 調用 HomeController.Index() 方法,而 URL /Home/About 調用 HomeController.About() 方法。

控制器中的任何公共方法都作為控制器操作被公開。請小心對待它們。這意味著通過向瀏覽器輸入正確的 URL 來訪問 Internet 的任何人都可以激活包含在控制器中的任何公共方法。

了解視圖

HomeController 類公開的兩個控制器方法 Index()About() 都返回了一個視圖。視圖包括發送到瀏覽器的 HTML 標記和內容。在使用 ASP.NET MVC 應用程序時,視圖就等于頁面。

必須在正確的位置創建視圖。HomeController.Index() 操作返回位于以下路徑的視圖:

\Views\Home\Index.aspx

HomeController.About() 操作返回位于以下路徑的視圖:

\Views\Home\About.aspx

總之,如果要為控制器操作返回視圖,則需要在 Views 文件夾中使用與控制器相同的名稱創建子文件夾。在子文件夾中,必須創建與控制器操作名稱相同的 .aspx 文件。

程序清單 3 中的文件包含 About.aspx 視圖。

程序清單 3 About.aspx

<%@?Page?Language="C#"?MasterPageFile="~/Views/Shared/Site.Master"AutoEventWireup="true"?CodeBehind="About.aspx.cs"?Inherits="MvcApplication1.Views.Home.About"%>?<asp:Content?ID="aboutContent"?ContentPlaceHolderID="MainContent"?runat="server">?????<h2>About?Us</h2>?????<p>??????????TODO:?Put?<em>about</em>?content?here.?????</p></asp:Content>

如果忽略程序清單 3 中的第一行,則其余大多數視圖的內容都由標準的 HTML 組成。在此處,可以通過輸入任何您想要的 HTML 修改視圖的內容。

視圖非常類似于 Active Server Pages 或 ASP.NET Web Forms 的頁面。視圖包括 HTML 內容和腳本。可以使用您偏愛的 .NET 編程語言(如 C# 或 Visual Basic .NET)編寫腳本。使用腳本顯示動態內容,如數據庫中的數據。

了解模型

我們已經討論了控制器和視圖。要討論的最后一個主題是模型。什么是 MVC 模型?

MVC 模型包含所有視圖或控制器不包含的應用程序邏輯。模型應該包含所有應用程序業務邏輯和數據庫訪問邏輯。例如,如果您正在使用 LINQ to SQL 訪問數據庫,那么您將在 Models 文件夾中創建 LINQ to SQL 類(dbml 文件)。

視圖應該只包含與生成用戶界面相關的邏輯。控制器應該只包含要求返回正確視圖或將用戶重定向到另一操作所需的最小邏輯。其他所有內容都應包含在模型中。

總之,應該努力實現高效模型和簡化控制器。控制器方法應該只包含幾行代碼。如果控制器操作過長,則應該考慮將邏輯移動到 Models 文件夾中的一個新類中。

總結

本教程就 ASP.NET MVC Web 應用程序的各個不同部分提供了高水平的概述。您學習了 URL 路由如何將進入的瀏覽器請求映射到特定控制器操作。您還學習了控制器如何協調視圖返回到瀏覽器的方式。最后,學習了模型如何包含應用程序業務和數據庫訪問邏輯。

http://msdn.microsoft.com/zh-cn/dd408936

總結

以上是生活随笔為你收集整理的了解模型、视图和控制器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。