自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

學習ASP.NET MVC的基本概念

開發(fā) 后端
本文介紹了學習ASP.NET MVC中的一些最基本的概念:controller,Views以及Models。visual studio用于創(chuàng)建mvc的模板默認包含了一個極其簡單的mvc例子。通過這個例子你可以了解mvc應用的不同部分組成。

visual studio用于創(chuàng)建mvc的模板默認包含了一個極其簡單的mvc例子。通過這個例子你可以了解mvc應用的不同部分組成。這里我們利用這個簡單的例子進行ASP.NET MVC基本概念的學習。

首先創(chuàng)建mvc應用。這里我們還是不選擇添加測試項目。

創(chuàng)建成功后,可以看到一些文件夾和文件。你需要對Models,Views,Controllers這三個文件夾特別關(guān)注。顧名思義,這三個文件夾內(nèi)包含了m,v,c中的文件。

展開controllers文件夾,我們可以看到一個叫做AccountController.cs的文件和一個HomeController.cs文件。Views文件夾下可以看到三個子文件夾 Account, Home and Shared。展開Home文件夾,看到兩個文件About.aspx 和Index.aspx 。這些文件組成了我們這個mvc簡單的實例。文件結(jié)構(gòu)如下圖

文件結(jié)構(gòu) 

按F5運行這個項目,如果是第一次運行,會提示啟動調(diào)試模式對話框。選擇確定。

這個簡單的項目只含有兩個頁面:Index和About,當程序第一次運行的時候,瀏覽器呈現(xiàn)的是index頁面,可以通過右上部的導航定位到About頁面。

可以通過右上部的導航定位到About頁面 

注意地址欄中的地址。例如:當你點擊About按鈕時,地址欄中的地址變?yōu)?Home/About.

關(guān)掉瀏覽器回到VS,你不會在/Home/About目錄中找到任何文件,這些文件是在該目錄是不存在的,但是為什么會這樣呢?

ASP.NET MVC基本概念:一個URL不等于一個頁面

當你創(chuàng)建一個asp程序或asp.net web窗體程序時,一個URL和一個頁面是一一對應的。如果你向服務器請求一個頁面somepage.aspx,服務器磁盤上應該有一個頁面叫做somepage.aspx,如果somepage.aspx不存在,你會得到一個404錯誤提示。

但是mvc程序相比之下,你在地址欄中寫入的地址與項目中的文件并不是一一對應的。在mvc程序中,一個URL相當于一個controller action,并不是一個aspx頁面。

在傳統(tǒng)的aspx程序中,瀏覽器請求被映射到頁面,在mvc程序中,瀏覽器請求被映射到controller action。web窗體應用是以內(nèi)容為中心,mvc應用以程序邏輯為中心。

學習asp.net mvc 路徑

瀏覽器請求得到一個由asp.net framework中叫做asp.net routing機制映射的controller action。asp.net routing被mvc框架用來為正在到達的請求選擇一個路徑指向controller action。

asp.net routing用一個路由表(route Table)來提交請求。這個路由表在程序第一次運行的時候就已經(jīng)產(chǎn)生了。route table在global.asax文件中被定義。默認global.asax內(nèi)容如下:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Mvc;  
  6. using System.Web.Routing;  
  7.  
  8. namespace MvcApplication1  
  9. {  
  10.     // Note: For instructions on enabling IIS6 or IIS7 classic mode,   
  11.     // visit http://go.microsoft.com/?LinkId=9394801  
  12.  
  13.     public class MvcApplication : System.Web.HttpApplication  
  14.     {  
  15.         public static void RegisterRoutes(RouteCollection routes)  
  16.         {  
  17.             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");  
  18.  
  19.             routes.MapRoute(  
  20.                 "Default",                                              // Route name  
  21.                 "{controller}/{action}/{id}",                           // URL with parameters  
  22.                 new { controller = "Home", action = "Index", id = "" } // Parameter defaults  
  23.             );  
  24.  
  25.         }  
  26.  
  27.         protected void Application_Start()  
  28.         {  
  29.             RegisterRoutes(RouteTable.Routes);  
  30.         }  
  31.     }  
  32. }  

當程序運行時, Application_Start()方法就被調(diào)用,在上面代碼中, Application_Start()方法調(diào)用RegisterRoutes()方法,RegisterRoutes()創(chuàng)建默認路由表。

默認路由表由一條路由組成。這條路由把一個正在進行的請求分成三個部分。第一部分的URL被映射到controller,第二部分URL被映射到action,最后一部分用來給action傳遞參數(shù)id。例如

假設(shè)下面的url:/Product/Details/3

這個url被分解成三個部分:controller=product,action=details,id=3

在global.asax文件中定義的默認路由包含這三個參數(shù)的默認值。默認controller為Home,默認action為Index,默認id為空。有了上面的知識做基礎(chǔ),來分析下面這個url

/Employee

分解成三部分為controller=employee,action=Index,id=空。

最后,如果我們打開一個mvc應用不寫任何的路徑(如http://localhost),那么,這個路徑被解析成下面的三部分

controller=Home,action=Index,id=。

請求被映射到Homecontroller中的Index()action。

學習ASP.NET MVC:理解controllers

一個controller對一個用戶與mvc應用交互的方式負責。controller包含mvc應用的流控制邏輯。controller決定了當用戶請求后返回給用戶一個什么內(nèi)容。

controller僅僅是一個類(C#或VB class),這個mvc簡單例子包括一個位于controllers文件夾下的HomeController.cs文件。內(nèi)容如下

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Mvc;  
  6.  
  7. namespace MvcApplication1.Controllers  
  8. {  
  9.     [HandleError]  
  10.     public class HomeController : Controller  
  11.     {  
  12.         public ActionResult Index()  
  13.         {  
  14.             ViewData["Title"] = "Home Page";  
  15.             ViewData["Message"] = "Welcome to ASP.NET MVC!";  
  16.  
  17.             return View();  
  18.         }  
  19.  
  20.         public ActionResult About()  
  21.         {  
  22.             ViewData["Title"] = "About Page";  
  23.  
  24.             return View();  
  25.         }  
  26.     }  
  27. }  

注意該controller下含有Index和About兩個方法。這兩個方法就是controller提供的公共的兩個action。/Home/Index這個路徑就會引用這個controller中的Index()方法。同理About()也是這樣。

在controller中的任何公共方法都被當做一個controller action。對此要非常小心。這就意味著在controller下面的任何公共方法都可以被互聯(lián)網(wǎng)上輸入了正確URL的瀏覽器所訪問到。

學習ASP.NET MVC:理解Views

上面兩個Action同時都返回了view,view包含了html標記與被送往客戶瀏覽器的內(nèi)容。在mvc應用中,view就相當于一個頁面。我們必須在合適的位置創(chuàng)建相應的view。HomeController.Index() 返回一個在下列目錄中的view:\Views\Home\Index.aspx,The HomeController.About()則返回\Views\Home\About.aspx。

一般,如果想為一個controller返回一個view,你需要在Views目錄下新建子目錄,并以controller同名,在這個子目錄中,必須建立一個aspx頁面,并以controller action同名。

如About.aspx內(nèi)容如下:

  1. < %@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 
  2.  
  3. < asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server"> 
  4.     < h2>About< /h2> 
  5.     < p> 
  6.         Put content here.  
  7.     < /p> 
  8. < /asp:Content> 

如果我們忽略掉第一行,剩下View中的大部分都由標準HTML組成。我們可以修改這個View用我們想要的HTML代碼。

View與asp和aspx web窗體十分類似。可以包括HTML和script內(nèi)容。你可以根據(jù)自己的喜好的.net語言寫腳本(c#或VB),通過這些腳本,我們可以呈現(xiàn)動態(tài)數(shù)據(jù),如數(shù)據(jù)庫數(shù)據(jù)。

學習ASP.NET MVC:理解Models

controller和Views都討論完了,最后我們要討論一下最后一個ASP.NET MVC基本概念:Models。mvc Models是什么呢?

Models包含了在controller和Views中沒有實現(xiàn)的所有的應用邏輯。Models應該包含所有的應用業(yè)務邏輯,認證邏輯,數(shù)據(jù)訪問邏輯。例如:如果使用了Microsoft Entity Framework 來實現(xiàn)數(shù)據(jù)訪問,就需要在Models文件夾下建立Microsoft Entity Framework類的.edmx 文件。

View應該只包含與用戶界面有關(guān)的邏輯。controller應該只包含轉(zhuǎn)到正確View或轉(zhuǎn)到其他action的邏輯。其他的東西都應該放在Models下面。

一般,我們需要向“胖”Models和“瘦”controllers努力。controller方法應該只含有少量的幾行代碼就可以。如果一個controller很“胖”,你則需要考慮將邏輯移到models文件夾下的一個新類里面。

【編輯推薦】

  1. 淺談ASP.NET MVC框架
  2. ASP.NET的AsyncState參數(shù)
  3. ASP.NET MVC執(zhí)行異步Action
  4. 概述ASP.NET MVC框架
  5. ASP.NET MVC中使用UpdataModel方法
責任編輯:yangsai 來源: 百度空間
相關(guān)推薦

2009-08-04 12:59:42

ASP.NET控件開發(fā)

2009-04-20 09:43:37

ASP.NET MVC基礎(chǔ)開發(fā)

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-31 12:43:59

ASP.NET MVC

2009-07-22 15:02:02

ASP.NET MVC

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-22 09:11:02

Action方法ASP.NET MVC

2009-07-20 15:44:32

ASP.NET MVC

2009-07-28 15:03:02

依賴性注入

2015-01-07 09:32:50

ASP.NET MVC路由

2009-07-23 15:44:39

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-20 10:53:59

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-28 17:17:19

ASP.NET概述

2011-09-22 10:58:56

ASP.NET

2009-08-04 12:29:57

ViewState概念ASP.NET

2009-07-20 12:59:53

ASP.NET MVCASP.NET框架的功

2009-07-23 10:08:24

asp.net mvc
點贊
收藏

51CTO技術(shù)棧公眾號