偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

學(xué)習(xí)ASP.NET MVC的基本概念

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

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

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

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

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

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

按F5運(yùn)行這個(gè)項(xiàng)目,如果是第一次運(yùn)行,會(huì)提示啟動(dòng)調(diào)試模式對(duì)話框。選擇確定。

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

可以通過右上部的導(dǎo)航定位到About頁面 

注意地址欄中的地址。例如:當(dāng)你點(diǎn)擊About按鈕時(shí),地址欄中的地址變?yōu)?Home/About.

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

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

當(dāng)你創(chuàng)建一個(gè)asp程序或asp.net web窗體程序時(shí),一個(gè)URL和一個(gè)頁面是一一對(duì)應(yīng)的。如果你向服務(wù)器請(qǐng)求一個(gè)頁面somepage.aspx,服務(wù)器磁盤上應(yīng)該有一個(gè)頁面叫做somepage.aspx,如果somepage.aspx不存在,你會(huì)得到一個(gè)404錯(cuò)誤提示。

但是mvc程序相比之下,你在地址欄中寫入的地址與項(xiàng)目中的文件并不是一一對(duì)應(yīng)的。在mvc程序中,一個(gè)URL相當(dāng)于一個(gè)controller action,并不是一個(gè)aspx頁面。

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

學(xué)習(xí)asp.net mvc 路徑

瀏覽器請(qǐng)求得到一個(gè)由asp.net framework中叫做asp.net routing機(jī)制映射的controller action。asp.net routing被mvc框架用來為正在到達(dá)的請(qǐng)求選擇一個(gè)路徑指向controller action。

asp.net routing用一個(gè)路由表(route Table)來提交請(qǐng)求。這個(gè)路由表在程序第一次運(yùn)行的時(shí)候就已經(jīng)產(chǎn)生了。route table在global.asax文件中被定義。默認(rèn)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. }  

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

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

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

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

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

/Employee

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

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

controller=Home,action=Index,id=。

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

學(xué)習(xí)ASP.NET MVC:理解controllers

一個(gè)controller對(duì)一個(gè)用戶與mvc應(yīng)用交互的方式負(fù)責(zé)。controller包含mvc應(yīng)用的流控制邏輯。controller決定了當(dāng)用戶請(qǐng)求后返回給用戶一個(gè)什么內(nèi)容。

controller僅僅是一個(gè)類(C#或VB class),這個(gè)mvc簡單例子包括一個(gè)位于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兩個(gè)方法。這兩個(gè)方法就是controller提供的公共的兩個(gè)action。/Home/Index這個(gè)路徑就會(huì)引用這個(gè)controller中的Index()方法。同理About()也是這樣。

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

學(xué)習(xí)ASP.NET MVC:理解Views

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

一般,如果想為一個(gè)controller返回一個(gè)view,你需要在Views目錄下新建子目錄,并以controller同名,在這個(gè)子目錄中,必須建立一個(gè)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中的大部分都由標(biāo)準(zhǔn)HTML組成。我們可以修改這個(gè)View用我們想要的HTML代碼。

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

學(xué)習(xí)ASP.NET MVC:理解Models

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

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

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

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

【編輯推薦】

  1. 淺談ASP.NET MVC框架
  2. ASP.NET的AsyncState參數(shù)
  3. ASP.NET MVC執(zhí)行異步Action
  4. 概述ASP.NET MVC框架
  5. ASP.NET MVC中使用UpdataModel方法
責(zé)任編輯: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-31 12:43:59

ASP.NET MVC

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-22 09:11:02

Action方法ASP.NET MVC

2009-07-20 15:44:32

ASP.NET MVC

2009-07-22 15:02:02

ASP.NET MVC

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-28 17:17:19

ASP.NET概述

2015-01-07 09:32:50

ASP.NET MVC路由

2009-07-22 13:24:24

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-20 10:53:59

ASP.NET MVC

2009-07-23 15:44:39

ASP.NET MVC

2009-07-28 15:03:02

依賴性注入

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
點(diǎn)贊
收藏

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