成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

visual studio用于創(chuàng)建mvc的模板默認(rèn)包含了一個(gè)極其簡(jiǎn)單的mvc例子。通過(guò)這個(gè)例子你可以了解mvc應(yīng)用的不同部分組成。這里我們利用這個(gè)簡(jiǎn)單的例子進(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中的文件。

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

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

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

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

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

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

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

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

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

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

在傳統(tǒng)的aspx程序中,瀏覽器請(qǐng)求被映射到頁(yè)面,在mvc程序中,瀏覽器請(qǐng)求被映射到controller action。web窗體應(yīng)用是以?xún)?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框架用來(lái)為正在到達(dá)的請(qǐng)求選擇一個(gè)路徑指向controller action。

asp.net routing用一個(gè)路由表(route Table)來(lái)提交請(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,最后一部分用來(lái)給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ǔ),來(lái)分析下面這個(gè)url

/Employee

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

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

controller=Home,action=Index,id=。

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

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

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

controller僅僅是一個(gè)類(lèi)(C#或VB class),這個(gè)mvc簡(jiǎn)單例子包括一個(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的瀏覽器所訪(fǎng)問(wèn)到。

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

上面兩個(gè)Action同時(shí)都返回了view,view包含了html標(biāo)記與被送往客戶(hù)瀏覽器的內(nèi)容。在mvc應(yīng)用中,view就相當(dāng)于一個(gè)頁(yè)面。我們必須在合適的位置創(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頁(yè)面,并以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窗體十分類(lèi)似。可以包括HTML和script內(nèi)容。你可以根據(jù)自己的喜好的.net語(yǔ)言寫(xiě)腳本(c#或VB),通過(guò)這些腳本,我們可以呈現(xiàn)動(dòng)態(tài)數(shù)據(jù),如數(shù)據(jù)庫(kù)數(shù)據(jù)。

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

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

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

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

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

【編輯推薦】

  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 來(lái)源: 百度空間
相關(guān)推薦

2009-08-04 12:59:42

ASP.NET控件開(kāi)發(fā)

2009-04-20 09:43:37

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

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-31 12:43:59

ASP.NET MVC

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-22 15:02:02

ASP.NET MVC

2009-07-28 15:03:02

依賴(lài)性注入

2009-07-20 15:44:32

ASP.NET MVC

2009-07-22 09:11:02

Action方法ASP.NET MVC

2009-07-28 17:17:19

ASP.NET概述

2015-01-07 09:32:50

ASP.NET MVC路由

2009-07-20 10:53:59

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-23 15:44:39

ASP.NET MVC

2009-08-04 12:29:57

ViewState概念ASP.NET

2011-09-22 10:58:56

ASP.NET

2009-07-23 10:08:24

asp.net mvc

2009-07-22 13:16:04

MvcAjaxPaneASP.NET MVC
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 成人影视网 | 激情伊人网 | 久久久久久成人网 | 一区在线观看视频 | 精品久久一 | 日韩一区二区三区在线观看 | 欧美白人做受xxxx视频 | 色婷婷精品 | 一本一道久久a久久精品蜜桃 | 亚洲美女视频 | 2019天天操 | 久久精彩| 精品国产乱码久久久久久影片 | 国产精品久久久久久久久 | 欧美日韩国产在线 | 伊人久久国产 | 亚洲国产一区二区三区在线观看 | 日韩一区二区av | 午夜精品久久 | 亚洲 欧美 在线 一区 | 亚洲精品成人在线 | 久久久福利 | 成人在线网址 | 色视频www在线播放国产人成 | 国产欧美日韩一区二区三区在线观看 | 午夜99 | 国产精品亚洲一区二区三区在线 | 亚洲国产精品久久人人爱 | 成人深夜福利 | 中文字幕日韩欧美一区二区三区 | 56pao在线| 成人在线精品 | 午夜影视在线观看 | 亚洲一区二区三区在线视频 | 亚洲网站在线观看 | 亚洲码欧美码一区二区三区 | 在线播放国产一区二区三区 | 国产一区二区在线视频 | 国产视频三级 | 中文字幕在线播放第一页 | 户外露出一区二区三区 |