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

ASP.NET MVC教程:理解控制器、控制器行為和行為結(jié)果

原創(chuàng)
開發(fā) 后端
本文系統(tǒng)地講解了ASP.NET MVC控制器、控制器行為和行為結(jié)果,當(dāng)你閱讀完本文后,你就會(huì)知道控制器是如何控制訪問者與ASP.NET MVC網(wǎng)站進(jìn)行互動(dòng)的了。

上一篇:ASP.NET MVC教程:創(chuàng)建TaskList應(yīng)用程序

【51CTO快譯】

理解控制器

MVC控制器負(fù)責(zé)處理對(duì)ASP.NET MVC網(wǎng)站的請(qǐng)求,每個(gè)瀏覽器請(qǐng)求都被映射到一個(gè)特殊的控制器上,例如,假設(shè)你在你的瀏覽器地址欄中輸入下面的URL:

http://localhost/Product/Index/3

這時(shí)會(huì)調(diào)用ProductController控制器,productController負(fù)責(zé)產(chǎn)生瀏覽器請(qǐng)求對(duì)應(yīng)的響應(yīng),例如,控制器可能返回一個(gè)特定的視圖給瀏覽器,或控制器將用戶重定向到另一個(gè)控制器。

在你的ASP.NET MVC應(yīng)用程序的控制器文件夾下創(chuàng)建一個(gè)新的控制器,在控制器文件夾上點(diǎn)右鍵,選擇“添加” > “新項(xiàng)目”,然后選擇MVC控制器類模板(如圖1所示),控制器名稱后綴必須包括Controller,例如,productController控制器。


1  創(chuàng)建新控制器

如果你創(chuàng)建的新控制器名叫productController,那么你的文件內(nèi)容就如清單1所示。

清單1 productController.vb

Public Class ProductController 
     Inherits System.Web.Mvc.Controller 
     Function Index() 
          ' Add action logic 
here           Throw New 
NotImplementedException()      End Function End Class 

正如你在清單1中所看到的,控制器就是一個(gè)類(Visual Basic .NET或c#類),控制器是一個(gè)衍生于System.Web.Mvc.Controller基礎(chǔ)類的類,因?yàn)榭刂破骼^承了這個(gè)類,因此就繼承了多個(gè)有用的方法。

理解控制器行為

控制器暴露控制器行為,當(dāng)你在你的瀏覽器地址欄中輸入一個(gè)特定的URL時(shí)就會(huì)調(diào)用一個(gè)控制器行為,例如,假設(shè)你輸入了下面的URL:

http://localhost/Product/Index/3

在這個(gè)例子中,調(diào)用了productController類的Index()方法,Index()方法是控制器行為的一個(gè)例子。

控制器行為必須是控制器類的一個(gè)公共方法,默認(rèn)情況下,Visual Basic .NET函數(shù)是公共函數(shù),這意味著默認(rèn)情況下,任何添加到控制器類的函數(shù)都作為一個(gè)控制器行為暴露在外(你必須小心這一點(diǎn),因?yàn)榭刂破餍袨榭梢员蝗魏稳苏{(diào)用)。

有幾個(gè)額外的需求必須滿足控制器行為,作為控制器行為的方法不能超載,而且,控制器行為不能是一個(gè)共享的方法,除此之外,你可以將任何方法當(dāng)做控制器行為使用。

#p#

理解行為結(jié)果

控制器行為返回的事物叫做行為結(jié)果,一個(gè)行為結(jié)果就是控制器行為返回給瀏覽器請(qǐng)求的響應(yīng)。

ASP.NET MVC框架支持六個(gè)標(biāo)準(zhǔn)類型的行為結(jié)果:

1.視圖結(jié)果(ViewResult):表示HTML和標(biāo)記。

2.空結(jié)果(EmptyResult):表示沒有結(jié)果。

3.重定向結(jié)果(RedirectResult):表示重定向到一個(gè)新的URL。

4.重定向到路由結(jié)果(RedirectToRouteResult):表示重定向到一個(gè)新的控制器行為。

5.JsonResult:表示可以用于AJAX應(yīng)用程序的JavaScript對(duì)象標(biāo)記結(jié)果。

6.內(nèi)容結(jié)果(ContentResult):表示一個(gè)文本結(jié)果。

這些行為結(jié)果都繼承自基礎(chǔ)行為結(jié)果(ActionResult)類。

大多數(shù)情況下,控制器行為返回視圖結(jié)果,例如,清單2中的Index控制器行為返回一個(gè)視圖結(jié)果。

清單2 BookController.vb

Public Class BookController 
     Inherits System.Web.Mvc.Controller 
     Function Index() 
          Return View() 
     End Function End Class 

當(dāng)一個(gè)行為返回一個(gè)視圖結(jié)果時(shí),返回給瀏覽器的就是HTML,清單2 中的Index()方法返回一個(gè)名叫Index.aspx視圖給瀏覽器。

注意清單2 中的Index()行為沒有返回ViewResult(),相反,控制器基礎(chǔ)類的View()方法被調(diào)用,正常情況下,你不用直接返回一個(gè)行為結(jié)果,相反,你可以調(diào)用下面的控制器基礎(chǔ)類方法:

1.View:返回一個(gè)ViewResult行為結(jié)果。

2.Redirect:返回一個(gè)RedirectResult行為結(jié)果。

3.RedirectToAction:返回一個(gè)RedirectToActionResult行為結(jié)果。

4.RedirectToRoute:返回一個(gè)RedirectToRouteResult行為結(jié)果。

5.Json:返回一個(gè)JsonResult行為結(jié)果。

6.Content:返回一個(gè)ContentResult行為結(jié)果。

因此,如果你想返回一個(gè)視圖(View)給瀏覽器,可以調(diào)用View()方法,如果你想將用戶重定向到另一個(gè)控制器,可以調(diào)用RedirectToAction() 方法,例如,清單3中的Details()行為要么顯示一個(gè)視圖,要么重定向到Index()行為,這依賴于Id參數(shù)是否有值。

清單3 CustomerController.vb

Public Class CustomerController 
     Inherits System.Web.Mvc.Controller 
     Function Details(ByVal Id As Integer?) 
          If IsNothing(Id) 
Then 
               Return 
RedirectToAction("Index") 
          End If 
          Return View() 
     End Function 
     Function Index() 
          Return View() 
     End Function End Class

ContentResult行為結(jié)果是特殊的,你可以使用ContentResult行為結(jié)果返回一個(gè)明文行為結(jié)果,例如,清單4中的Index()方法返回一個(gè)明文消息而不是HTML。

清單4 StatusController.vb

Public Class StatusController 
     Inherits System.Web.Mvc.Controller 
     Function Index() 
          Return 
Content("Hello World!")      End Function End Class 

當(dāng)StatusController.Index() 行為被調(diào)用時(shí),不會(huì)返回一個(gè)視圖,相反,會(huì)返回一個(gè)原始文本“Hello World!”給瀏覽器。

如果控制器行為返回的結(jié)果不是一個(gè)行為結(jié)果,例如,一個(gè)日期或一個(gè)整數(shù),那么ContentResult中的結(jié)果會(huì)自動(dòng)換行,例如,清單5中的WorkController Index()行為被調(diào)用時(shí),ContentResult會(huì)自動(dòng)作為一個(gè)日期返回。

清單5 WorkController.vb

Public Class WorkController 
     Inherits System.Web.Mvc.Controller 
     Function Index() As DateTime 
          Return DateTime.Now 
     End Function End Class 

清單5中的Index()行為返回一個(gè)DateTime對(duì)象,ASP.NET MVC框架會(huì)將DateTime對(duì)象轉(zhuǎn)換成一個(gè)字符串,并且在ContentResult中的DateTime值會(huì)自動(dòng)換行,瀏覽器接收日期和時(shí)間的明文。

小結(jié)

本文的目的是向你介紹ASP.NET MVC控制器、控制器行為和控制器行為結(jié)果的概念,在***小節(jié)中,你學(xué)習(xí)了如何添加新的控制器到一個(gè)ASP.NET MVC項(xiàng)目,接下來(lái),你學(xué)習(xí)了控制器的公共方法是如何作為控制器行為暴露給所有人的,***,我們討論了控制器行為返回的不同類型的行為結(jié)果,特別是如何從控制器行為返回一個(gè)視圖結(jié)果、重定向到行為結(jié)果和內(nèi)容結(jié)果。

原文:Understanding Controllers, Controller Actions, and Action Results   

作者:Stephen Walther

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

【編輯推薦】

  1. ASP.NET MVC教程:創(chuàng)建TaskList應(yīng)用程序
  2. ASP.NET MVC教程:理解模型、視圖和控制器
  3. ASP.NET MVC框架視頻教程
責(zé)任編輯:楊鵬飛 來(lái)源: 51CTO
相關(guān)推薦

2011-08-08 10:46:15

ASP.NET MVC

2012-02-03 09:06:53

ASP.NET MVC

2015-02-02 09:37:42

SDN控制器

2011-07-12 13:52:04

域控制器ASP.NET

2011-07-14 10:28:54

額外域控制器

2015-08-07 15:28:46

選取城市控制器源碼

2023-08-13 18:31:45

SDN控制器

2011-03-08 08:58:37

springmvc

2011-07-12 09:29:10

主域控制器備份域控制器

2024-09-27 16:28:07

2023-11-19 18:46:04

智能控制器芯片

2013-12-19 09:32:01

SDN南向網(wǎng)絡(luò)控制

2011-07-18 13:55:08

2015-02-27 10:52:17

SDN

2017-11-23 17:27:35

Yii框架IntelYii框架深度剖析

2012-02-24 10:57:43

2011-07-07 15:01:02

2011-07-13 10:29:44

域控制器

2011-07-13 09:00:59

域控制器Active Dire

2015-07-20 11:34:06

點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美日韩亚洲系列 | 国产精品久久久久久妇女6080 | 亚洲午夜精品 | 欧美国产日韩在线 | 国产精品久久久久久久久大全 | 日本中文字幕一区 | 中文字幕国产视频 | 日本黄色免费视频 | 中文字幕免费视频 | 国产成人综合av | 91久久久久久久 | 一区二区三区免费 | 亚洲欧美国产毛片在线 | 欧美福利久久 | 91久色 | 狠狠久久综合 | 亚洲国产精品久久久久秋霞不卡 | 国产一区二区三区免费观看在线 | 久久久久9999| 国产女人与拘做视频免费 | 国产精品99视频 | 少妇性l交大片免费一 | 国产 91 视频| 97色在线视频 | 老头搡老女人毛片视频在线看 | 免费电影av | 日韩一区二区在线观看视频 | 在线视频国产一区 | 亚洲乱码一区二区 | 国产欧美一区二区三区在线看 | 狠狠av | 亚洲精品免费在线观看 | av大片在线观看 | 国产精品欧美一区二区三区不卡 | 亚洲欧美一区二区三区视频 | 91国在线视频 | 成人深夜小视频 | 91精品国产综合久久久久久首页 | 成人精品一区二区 | 日韩一区二区在线播放 | 美女露尿口视频 |