成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C#中模型、視圖和控制器的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹C#中模型、視圖和控制器的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),會(huì)同網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:會(huì)同等地區(qū)。會(huì)同做網(wǎng)站價(jià)格咨詢:18980820575

示例 ASP.NET MVC 應(yīng)用程序

  用以創(chuàng)建ASP.NET MVC Web程序的默認(rèn)的 Visual Studio 模板包括一個(gè)極其簡(jiǎn)單的示例程序,可以用來(lái)理解ASP.NET MVC Web程序的不同部分。我們?cè)谶@個(gè)教程里就利用這個(gè)簡(jiǎn)單程序吧。

  運(yùn)行Visual Studio 2008, 選擇“文件”,“新建”(見圖1),用MVC模板創(chuàng)建ASP.NET MVC程序。在“新建項(xiàng)目”對(duì)話框中,在“項(xiàng)目類型(P)”(Visual Basic 或者C#)中選擇你喜歡的編程語(yǔ)言,并在“模板”下選擇 ASP.NET MVC Web Application 。點(diǎn)擊“確定”按鈕。

C#中模型、視圖和控制器的示例分析
圖1 新建項(xiàng)目對(duì)話框

  創(chuàng)建完新的 ASP.NET MVC 程序后, 出現(xiàn)Create Unit Test Project 對(duì)話框(見圖2). 這個(gè)對(duì)話框會(huì)在解決方案中為你創(chuàng)建一個(gè)單獨(dú)的用來(lái)測(cè)試你的ASP.NET MVC程序的項(xiàng)目。選擇選項(xiàng) No, do not create a unit test project 并單擊 OK 按鈕。

C#中模型、視圖和控制器的示例分析
圖2 創(chuàng)建單元測(cè)試對(duì)話框

  ASP.NET MVC 程序創(chuàng)建完成。你會(huì)在解決方案資源管理器窗口中看到幾個(gè)文件夾和文件。特別是你會(huì)看到三個(gè)分別名為Models,Views和Controllers的文件夾。顧名思義,這三個(gè)文件夾包含了實(shí)現(xiàn)模型,視圖和控制器的文件。

  如果你展開Controllers文件夾,你會(huì)看到一個(gè)名為AccountController.cs和一個(gè)名為HomeControllers.cs的文件。展開Views文件夾,會(huì)看到三個(gè)分別名為Account,Home和Shared的子文件夾。展開Home文件夾,會(huì)看到兩個(gè)分別名為About.aspx和Index.aspx的文件(見圖3)。這些文件組成了包括默認(rèn)ASP.NET MVC模板的示例程序。

C#中模型、視圖和控制器的示例分析
圖3 解決方案資源管理器窗口

  選擇“調(diào)試”,“啟動(dòng)調(diào)試”運(yùn)行示例程序?;蛘甙碏5鍵也可以。

  第一次運(yùn)行 ASP.NET 程序時(shí),會(huì)出現(xiàn)圖4所示的對(duì)話框,建議你啟動(dòng)調(diào)試。 點(diǎn)擊“確定”按鈕程序就會(huì)運(yùn)行起來(lái)了。

C#中模型、視圖和控制器的示例分析
圖4 調(diào)試未啟動(dòng)對(duì)話框

  運(yùn)行ASP.NET MVC 程序時(shí), Visual Studio 會(huì)在瀏覽器運(yùn)行你的程序。示例程序包括2個(gè)頁(yè)面:Index頁(yè)和About頁(yè)。程序首次啟動(dòng)時(shí),出現(xiàn)Index頁(yè)(見圖5)。你可以點(diǎn)擊程序右上方的菜單鏈接導(dǎo)航到About頁(yè)。

C#中模型、視圖和控制器的示例分析
圖5 Index 頁(yè)

  注意瀏覽器地址欄的URL,當(dāng)點(diǎn)擊About菜單鏈接時(shí),地址欄中的URL變?yōu)?/Home/About。

  關(guān)閉瀏覽器窗口回到 Visual Studio,你找不到路徑Home/About的文件。這個(gè)文件不存在,這怎么可能呢?

一個(gè)URL不等于一個(gè)頁(yè)

  生成傳統(tǒng)的ASP.NEW Web窗體程序或ASP程序時(shí),一個(gè)URL對(duì)應(yīng)一個(gè)網(wǎng)頁(yè)。如果向服務(wù)器一個(gè)名為 SomePage.aspx的頁(yè)面發(fā)起請(qǐng)求 ,那么磁盤里最好存在這么一個(gè)名為SomePage.aspx的頁(yè)面。如果 SomePage.aspx 文件不存在,將會(huì)得到一個(gè)丑陋的 404 – Page Not Found 錯(cuò)誤。

  相反,生成 ASP.NET MVC 程序時(shí),在你輸入瀏覽器地址的URL和你要在程序里找的文件之間并沒(méi)有對(duì)應(yīng)關(guān)系。在

  ASP.NET MVC 程序中, 一個(gè)URL并不對(duì)應(yīng)磁盤上的頁(yè)而是對(duì)應(yīng)一個(gè)控制器action。

  在傳統(tǒng) ASP.NET 或者 ASP 程序中, 瀏覽器請(qǐng)求被映射到頁(yè)面。相反,在 ASP.NET MVC 程序中, 瀏覽器請(qǐng)求被映射到控制器action。 ASP.NET Web 窗體程序以內(nèi)容為中心。 相反,ASP.NET MVC 程序以程序邏輯為中心。

理解ASP.NET Routing

  瀏覽器請(qǐng)求通過(guò)一個(gè)名為 ASP.NET Routing 的ASP.NET 框架特性來(lái)獲得控制器action的映射。 ASP.NET Routing 被 ASP.NET MVC 框架用來(lái)對(duì)傳入控制器action的請(qǐng)求進(jìn)行路由。

  ASP.NET Routing 用一個(gè)路由表來(lái)處理傳入的請(qǐng)求。當(dāng)web程序第一次運(yùn)行時(shí)這個(gè)路由表就會(huì)被創(chuàng)建。 它是在 Global.asax 文件中被創(chuàng)建的。默認(rèn)的 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
{
    // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
    // visit http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
            );
        }

        protected void Application_Start()
        {
            RegisterRoutes(RouteTable.Routes);
        }
    }
}

  ASP.NET 程序首次啟動(dòng)時(shí), Application_Start() 方法會(huì)被調(diào)用。 在代碼 1中, 此方法調(diào)用 RegisterRoutes() 方法創(chuàng)建默認(rèn)路由表。

  默認(rèn)路由表只包括一個(gè)路由。這個(gè)默認(rèn)的路由將傳入的請(qǐng)求分為三段(一個(gè)URL段就是兩個(gè)斜杠間的任何東西)。第一段映射到控制器名,第二段映射到action名,最后一段映射到一個(gè)傳到action的名為Id的參數(shù)。

  例如,考慮以下URL:

  /Product/Details/3

  這個(gè) URL 被解析為類似這樣的3個(gè)參數(shù):

  Controller = Product

  Action = Details

  Id = 3

  Global.asax 文件中定義的默認(rèn)路由包括所有三個(gè)參數(shù)的默認(rèn)值。默認(rèn)的控制器是 Home, 默認(rèn)的 Action 是 Index, 默認(rèn)的 Id 是空字符串。心里想著這些默認(rèn)值,思考一下下面的URL是怎么解析的:

  /Employee

  這個(gè) URL 被解析成類似這樣的三個(gè)參數(shù):

  Controller = Employee

  Action = Index

  Id =

  最后,如果你不輸入任何URL(例如,http://localhost)就打開 ASP.NET MVC 程序的話URL就像這樣解析:

  Controller = Home

  Action = Index

  Id =

  這個(gè)請(qǐng)求就被路由到HomeController類的 Index() action 中。

理解控制器

  控制器負(fù)責(zé)控制用戶與MVC程序交互的方式??刂破靼薃SP.NET MVC程序的流控制邏輯??刂破鳑Q定當(dāng)用戶發(fā)送一個(gè)瀏覽器請(qǐng)求時(shí)返回什么響應(yīng)。控制器就是一個(gè)類(例如,一個(gè)Visual Basic或者C#類)。樣例 ASP.NET MVC 程序包括一個(gè)位于Controllers文件夾中名為 HomeController.cs 的控制器。 HomeController.cs 文件內(nèi)容轉(zhuǎn)載在代碼 2中。

代碼 2 – HomeController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    [HandleError]
    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 有兩個(gè)方法,名為Index() 和About().。這兩個(gè)方法對(duì)應(yīng)由控制器暴露的兩個(gè)action。 URL /Home/Index 調(diào)用 HomeController.Index() 方法而URL/ Home/ About 調(diào)用 HomeController.About() 方法。

  控制器中的任何公共方法都被暴露為控制器action。對(duì)此你要特別小心。這意味著人們只要通過(guò)訪問(wèn)互聯(lián)網(wǎng),在瀏覽器中輸入正確的URL,就可以調(diào)用控制器中的任何公共方法。

理解視圖

  由HomeController暴露的 Index() 和About() 這兩個(gè)action都返回一個(gè)視圖。視圖包括HTML標(biāo)記和發(fā)送到瀏覽器的內(nèi)容。在ASP.NET MVC程序中視圖等同于一個(gè)頁(yè)面。你必須在正確的地方創(chuàng)建視圖。HomeController.Index() action 返回一個(gè)位于以下路徑的視圖:

  /Views/Home/Index.aspx

  HomeController.About() action 返回一個(gè)位于以下路徑的視圖:

  /Views/Home/About.aspx

  通常,如果你想為控制器action返回視圖,那么你需要在Views文件夾下創(chuàng)建一個(gè)與控制器同名的子文件夾。在此子文件夾內(nèi),你得創(chuàng)建一個(gè)與控制器action同名的 .aspx 文件。

  代碼3 中的文件包含 About.aspx 視圖。

代碼3 – About.aspx

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server">
    <h3>About</h3>
    <p>
        Put content here.
    </p>
</asp:Content>

  如果你忽略代碼3的第一行,視圖的其余部分包含了標(biāo)準(zhǔn)的HTML。你可以輸入任何你想要的HTML來(lái)修改視圖的內(nèi)容。

  視圖和ASP或ASP.NET Web窗體中的頁(yè)面很相似。視圖可以包含HTML內(nèi)容和腳本。你可以用你喜歡的編程語(yǔ)言寫腳本(例如,C#或Visual Basic .NET)。使用腳本來(lái)顯示動(dòng)態(tài)內(nèi)容,例如數(shù)據(jù)庫(kù)數(shù)據(jù)。

理解模型

  我們已經(jīng)討論了控制器和視圖。最后一個(gè)話題就是模型了。什么是MVC模型?

  MVC 模型包含程序中的所有邏輯,而這些邏輯并不包含在視圖或控制器中。模型應(yīng)該包含所有程序業(yè)務(wù)邏輯,驗(yàn)證邏輯和數(shù)據(jù)庫(kù)訪問(wèn)邏輯。例如,如果你用 Microsoft Entity Framework 來(lái)訪問(wèn)數(shù)據(jù)庫(kù),那么你要在Models文件夾中創(chuàng)建 Entity Framework 類 ( .edmx 文件) 。

  視圖應(yīng)該僅僅包含生成用戶界面的邏輯。控制器應(yīng)該僅僅包含返回正確視圖的最小邏輯或者將用戶重定向到其他action(流控制)。其它的任何事情都應(yīng)該包含在模型中。

  通常,你應(yīng)該為“胖”模型和“瘦”控制器而努力??刂破鞣椒☉?yīng)該只包含幾行代碼。如果控制器action變得太“胖”的話,那么就應(yīng)該考慮將邏輯挪出到Models文件夾中的一個(gè)新類中。

以上是“C#中模型、視圖和控制器的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)頁(yè)標(biāo)題:C#中模型、視圖和控制器的示例分析-創(chuàng)新互聯(lián)
本文地址:http://jinyejixie.com/article40/jjoeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、小程序開發(fā)做網(wǎng)站、App開發(fā)、網(wǎng)站維護(hù)ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
浪卡子县| 杨浦区| 高尔夫| 大安市| 樟树市| 合作市| 乌拉特后旗| 昌江| 彭州市| 兖州市| 高雄市| 当阳市| 潮州市| 沧源| 鄯善县| 金堂县| 肇庆市| 肥城市| 阿鲁科尔沁旗| 大关县| 西畴县| 平顶山市| 淄博市| 厦门市| 淄博市| 芷江| 民权县| 图片| 嘉善县| 阳新县| 中宁县| 友谊县| 开远市| 镇康县| 犍为县| 延安市| 华池县| 察雅县| 遵化市| 隆尧县| 湾仔区|