0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

控制器Controller的使用方法

jf_78858299 ? 來源:python技術(shù)探秘 ? 作者:夢中的Aoede ? 2023-03-29 11:28 ? 次閱讀

Controller的運(yùn)行過程

上文我們已經(jīng)講到,控制器負(fù)責(zé)響應(yīng)瀏覽器傳送過來的所有請求。在MVC中,每一個瀏覽器請求都映射到一個控制器(Controller)中,每個請求都會有個動作(Action),只要動作存在,就可以通過該動作方法接收客戶端傳來的請求與決定響應(yīng)的視圖(View)。

我們以之前創(chuàng)建的MVC項(xiàng)目為例,打開項(xiàng)目的Index.cshtml頁面。

圖片

顯示的界面如下:

圖片

可以看到,頁面的地址欄URL為:http://localhost:61515/Home/Index

根據(jù)路由規(guī)則,Home是控制器(Controller)名,Index是動作(Action)名。所以這個URL調(diào)用的是HomeController控制器下的Index方法。

圖片

在Index方法中,只有這么一行代碼:return View();,表示返回視圖,然后返回給瀏覽器的是Views/Home文件夾下的Index.cshtml頁面。

雖然我們在Index方法中沒有指定返回哪個頁面,但根據(jù)ASP.NET MVC的約定規(guī)則,控制器會找到Views文件夾中,與Controller名稱相同文件夾下的同一方法名的頁面。所以返回的是Home下的Index.cshtml頁面。具體的有關(guān)控制器返回View的內(nèi)容下文會詳細(xì)說明。

控制器的運(yùn)行過程大體如上,從瀏覽器請求到控制器返回結(jié)果的整體流程為:

圖片

Controller請求參數(shù)處理

試想一下,我們在瀏覽器地址欄經(jīng)常能看到URL后面接很多個參數(shù),比如百度搜索:https://www.baidu.com/s?ie=UTF-8&wd=夢中的Aoede URL后面有ie和wd兩個參數(shù),那么這種參數(shù)在MVC中是怎樣獲取的呢?

舉個例子,我們給首頁鏈接增加兩個參數(shù):http://localhost:61515/Home/Index?name=夢中的Aoede&age=18。

那么在Index方法中,正常情況我們可以通過Request.QueryString獲取到這兩個參數(shù)。如下:

public ActionResult Index()
{
    var name = Request.QueryString["name"];
    var age = Request.QueryString["age"];
    return Content($"name:{name},age:{age}");
}

打開http://localhost:61515/Home/Index?name=夢中的Aoede&age=18,顯示如下:

圖片其實(shí)在MVC中,參數(shù)的傳遞是通過模型綁定(Model Binding)機(jī)制從RequestContext中獲取到參數(shù)數(shù)據(jù)的。獲取到數(shù)據(jù)之后再將數(shù)據(jù)傳入到方法的參數(shù)中,所以我們只需要在方法中增加兩個參數(shù)即可,如下:

public ActionResult Index(string name,int age)
{
      return Content($"name:{name},age:{age}");
}

打開頁面輸出結(jié)果還是一樣的:

圖片相同的,如果瀏覽器通過POST方式傳過來一個表單,那么我們也可以在Index參數(shù)中使用表單對應(yīng)的Model實(shí)體類來接收。在此我就不贅述了。

Controller返回值說明

Action處理完請求后,會將結(jié)果返回給客戶端。Action返回的結(jié)果我們稱為動作結(jié)果(Action Result)。

所有的動作結(jié)果都繼承自ActionResult基類,以HomeController中的Index方法為例,它return的View()就是一個ViewResult類,ViewResult類也是ActionResult的子類。

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

動作名稱 概述 方法名
ViewResult 視圖內(nèi)容,HTML或標(biāo)記 View
EmptyResult 空內(nèi)容
RedirectResult 重定向到新的URL Redirect
RedirectToRouteResult 重定向到新的控制器 RedirectToAction/RedirectToRoute
JsonResult 返回一個JSON(Javascript Object Notation)內(nèi)容 Json
ContentResult 返回文本內(nèi)容 Content

需要注意的是,雖然控制器返回的是動作結(jié)果(Action Result),但在代碼中,我們調(diào)用的是Controller基類中的方法。在上文的表中有對應(yīng)的方法名。

除了以上六種動作結(jié)果以外,你還可以給Action方法返回其他類型的返回值,這個返回值會自動被包裝在ContentResult中。比如這段代碼:

public class HomeController : Controlle
{
    public DateTime Index()
    {
        return DateTime.Now;
    }
}

Index返回的是DateTime對象,而在瀏覽器中,顯示的是一個日期字符串。

圖片

MVC過濾器

過濾器在MVC中也是個非常重要的概念,本文僅簡單介紹下什么是過濾器,詳細(xì)的內(nèi)容我會在后續(xù)文章中深入說明。

過濾器(Filters)就是向請求處理管道中注入額外的邏輯。

過濾器有不同類型,MVC支持的過濾器有:授權(quán)(Authorization)、行為(Action)、結(jié)果(Result)和異常(四種),不同類型有不同的作用,詳細(xì)的內(nèi)容我會在后續(xù)內(nèi)容說明。

我們以授權(quán)(Authorization)為例簡單說明下。比如我們有個方法,只有登錄用戶才可以調(diào)用,那么我們只需要添加一個驗(yàn)證用戶是否登錄的授權(quán)過濾器,在對應(yīng)的方法上方添加此過濾器的標(biāo)記即可。

總結(jié)

通過本文可以了解到,Controller的運(yùn)行過程,Controller中Action如何獲取參數(shù)、以及Action的返回值類型等內(nèi)容。更多內(nèi)容可關(guān)注我后續(xù)文章。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16367

    瀏覽量

    178122
  • 瀏覽器
    +關(guān)注

    關(guān)注

    1

    文章

    1025

    瀏覽量

    35364
  • MVC
    MVC
    +關(guān)注

    關(guān)注

    0

    文章

    73

    瀏覽量

    13860
收藏 人收藏

    評論

    相關(guān)推薦

    基型控制器使用方法

    目前,控制器(儀表)已經(jīng)很多,產(chǎn)品已在工程實(shí)際中得到了廣泛的應(yīng)用,基型控制器使用方法如下:1.基型控制器主要性能指標(biāo)基型控制器的主要技術(shù)指
    發(fā)表于 06-22 10:18

    PID Controller比例積分微分控制器

    Introduce引言Speend速度來源LPFilter低通濾波PID Controller比例積分微分控制器Summary總結(jié)
    發(fā)表于 09-03 06:45

    STM32外部中斷事件控制器EXTI的相關(guān)資料推薦

    : External interrupt / event controller外部中斷/事件控制器提示:以下是本篇文章正文內(nèi)容一、EXTI功能框圖二、使用方法1.EXTI_InitTypeDef 初始化結(jié)構(gòu)體1-EXTI_Lin
    發(fā)表于 12-01 08:06

    控制器的GPRS無線上網(wǎng)方法

    介紹一種在微控制器上實(shí)現(xiàn)PPP協(xié)議,并使其控制GPRS模塊通過GPRS連入Internet的方法;介紹GPRS技術(shù)和GPRS模塊的使用方法;重點(diǎn)介紹微
    發(fā)表于 04-16 21:56 ?2788次閱讀
    微<b class='flag-5'>控制器</b>的GPRS無線上網(wǎng)<b class='flag-5'>方法</b>

    DS18B20_溫度控制器的參數(shù)

    介紹溫度控制器的參數(shù),功能和使用方法。應(yīng)用有點(diǎn)。
    發(fā)表于 06-23 17:56 ?0次下載

    基于GUS Controller運(yùn)動控制器軟件調(diào)試及接線

    GUS Controller 系列運(yùn)動控制器,是將PC 技術(shù)與運(yùn)動控制找支術(shù)相結(jié)合的產(chǎn)物。它以X86 架構(gòu)的CPU 和芯片糾為系統(tǒng)處理,采用高性能DSP 和FPGA 作為運(yùn)動
    發(fā)表于 10-12 15:32 ?11次下載

    ac控制器怎么設(shè)置_AC控制器帶寬控制設(shè)置指導(dǎo)

    ac控制器是接入控制器(Access Controller或Wireless Access oint Controller),即無線控制器,
    發(fā)表于 03-27 15:37 ?5.2w次閱讀
    ac<b class='flag-5'>控制器</b>怎么設(shè)置_AC<b class='flag-5'>控制器</b>帶寬<b class='flag-5'>控制</b>設(shè)置指導(dǎo)

    STM32外部中斷事件控制器EXTI概念及使用方法

    : External interrupt / event controller外部中斷/事件控制器提示:以下是本篇文章正文內(nèi)容一、EXTI功能框圖二、使用方法1.EXTI_InitTypeDef 初始化結(jié)構(gòu)體1-EXTI_Lin
    發(fā)表于 11-22 16:21 ?7次下載
    STM32外部中斷事件<b class='flag-5'>控制器</b>EXTI概念及<b class='flag-5'>使用方法</b>

    模糊控制器的原理及使用方法

    模糊控制器是一種基于模糊邏輯的控制器,通過將輸入變量和輸出變量都表示為模糊量,并運(yùn)用模糊推理來實(shí)現(xiàn)針對復(fù)雜系統(tǒng)的控制。與傳統(tǒng)的控制器相比,模糊控制器
    發(fā)表于 03-17 18:12 ?3511次閱讀

    恒溫控制器使用方法

    需要注意的是,使用恒溫控制器時應(yīng)遵循安全操作規(guī)程,將布線正確連接,以確保恒溫控制器的正常運(yùn)行。同時,根據(jù)控制器的使用說明書,了解控制器的特性,確保正確使用。
    發(fā)表于 03-25 11:08 ?4236次閱讀

    PLC控制器的工作方式和使用方法

     PLC就是可編程邏輯控制器(Programmable Logic Controller)的縮寫。它是一種專用的數(shù)字計算機(jī),用于控制生產(chǎn)線、機(jī)器設(shè)備或工業(yè)過程中的自動化系統(tǒng)。它能夠接受數(shù)字或模擬信號
    發(fā)表于 03-30 18:22 ?6532次閱讀

    正運(yùn)動技術(shù)CAD導(dǎo)圖軟件配合控制器使用方法

    正運(yùn)動技術(shù)CAD導(dǎo)圖軟件配合控制器使用方法
    的頭像 發(fā)表于 10-12 18:20 ?2014次閱讀
    正運(yùn)動技術(shù)CAD導(dǎo)圖軟件配合<b class='flag-5'>控制器</b>的<b class='flag-5'>使用方法</b>

    手柄控制代碼及使用方法

    手柄控制代碼及使用方法
    的頭像 發(fā)表于 05-15 10:19 ?1837次閱讀

    PLC控制器使用方法和注意事項(xiàng)

    隨著工業(yè)自動化技術(shù)的飛速發(fā)展,可編程邏輯控制器(PLC)作為工業(yè)自動化領(lǐng)域的核心控制設(shè)備,已經(jīng)廣泛應(yīng)用于各個生產(chǎn)領(lǐng)域。PLC以其高可靠性、高靈活性、易編程等優(yōu)點(diǎn),成為了工業(yè)自動化中不可或缺的一部分。本文將詳細(xì)介紹PLC控制器
    的頭像 發(fā)表于 06-14 16:01 ?1329次閱讀

    PLC中斷功能的作用及使用方法

    在工業(yè)自動化控制系統(tǒng)中,PLC(Programmable Logic Controller,可編程邏輯控制器)作為核心的控制單元,承擔(dān)著處理各種控制
    的頭像 發(fā)表于 06-15 17:54 ?2054次閱讀