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

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

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

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

【51CTO快譯】

理解控制器

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

http://localhost/Product/Index/3

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

在你的ASP.NET MVC應(yīng)用程序的控制器文件夾下創(chuàng)建一個新的控制器,在控制器文件夾上點(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中所看到的,控制器就是一個類(Visual Basic .NET或c#類),控制器是一個衍生于System.Web.Mvc.Controller基礎(chǔ)類的類,因?yàn)榭刂破骼^承了這個類,因此就繼承了多個有用的方法。

理解控制器行為

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

http://localhost/Product/Index/3

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

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

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

#p#

理解行為結(jié)果

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

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

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

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

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

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

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

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

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

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

清單2 BookController.vb

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

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

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

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

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

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

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

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

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

因此,如果你想返回一個視圖(View)給瀏覽器,可以調(diào)用View()方法,如果你想將用戶重定向到另一個控制器,可以調(diào)用RedirectToAction() 方法,例如,清單3中的Details()行為要么顯示一個視圖,要么重定向到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é)果返回一個明文行為結(jié)果,例如,清單4中的Index()方法返回一個明文消息而不是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)用時,不會返回一個視圖,相反,會返回一個原始文本“Hello World!”給瀏覽器。

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

清單5 WorkController.vb

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

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

小結(jié)

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

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

作者:Stephen Walther

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

【編輯推薦】

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

2011-08-08 10:46:15

ASP.NET MVC

2012-02-03 09:06:53

ASP.NET MVC

2011-07-12 13:52:04

域控制器ASP.NET

2015-02-02 09:37:42

SDN控制器

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ò)控制

2013-06-08 09:50:30

SDN控制器應(yīng)用OpenFlow軟件定義網(wǎng)絡(luò)

2015-05-26 10:16:27

SDNSDN控制器

2015-07-14 11:09:26

SDN

2015-07-20 11:34:06

2021-11-25 14:44:51

Kubernetes復(fù)制控制器

2011-07-07 17:15:52

2011-07-12 09:58:42

主域控制器備份域控制器

2022-02-10 16:43:35

汽車智能芯片
點(diǎn)贊
收藏

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