首頁 後端開發 C#.Net教程 .NET MyMVC架構執行Action的流程詳解

.NET MyMVC架構執行Action的流程詳解

May 17, 2017 am 11:29 AM

在AjaxHandlerFactory的GetHandler方法中,最後將建立一個ActionHandler,這是一個HttpHandler, 它將在管線的第15個步驟中被呼叫(引用部落格【用Asp.net寫自己的服務框架】中的順序)。

注意:AjaxHandlerFactory的GetHandler方法是在第10步驟中呼叫的,第12步就是在準備Session(非進程內模式), 因此,必須在第12步前決定Session的使用方式。

所有的Action程式碼都是在ActionHandler中執行的:

internal class ActionHandler : IHttpHandler{    internal InvokeInfo InvokeInfo;    public void ProcessRequest(HttpContext context)
    {        // 调用核心的工具类,执行Action        ActionExecutor.ExecuteAction(context, this.InvokeInfo);
    }
登入後複製

ExecuteAction的實作過程如下:

internal static void ExecuteAction(HttpContext context, InvokeInfo vkInfo)
{    if( context == null )        throw new ArgumentNullException("context");    if( vkInfo == null )        throw new ArgumentNullException("vkInfo");    // 调用方法    object result = ExecuteActionInternal(context, vkInfo);    // 设置OutputCache    OutputCacheAttribute outputCache = vkInfo.GetOutputCacheSetting();    if( outputCache != null )
        outputCache.SetResponseCache(context);    // 处理方法的返回结果    IActionResult executeResult = result as IActionResult;    if( executeResult != null ) {
        executeResult.Ouput(context);
    }    else {        if( result != null ) {            // 普通类型结果            context.Response.ContentType = "text/plain";
            context.Response.Write(result.ToString());
        }
    }
}internal static object ExecuteActionInternal(HttpContext context, InvokeInfo info)
{    // 准备要传给调用方法的参数    object[] parameters = GetActionCallParameters(context, info.Action);    // 调用方法    if( info.Action.HasReturn )        return info.Action.MethodInfo.Invoke(info.Instance, parameters);    else {
        info.Action.MethodInfo.Invoke(info.Instance, parameters);        return null;
    }
}
登入後複製

前面我不是沒有說呼叫SetResponseCache()的時機嘛,這個時機就是在這裡:執行完Action後。
設定過OutputCache後,就是處理回傳值了。

前面那段程式碼中,還有一句重要的呼叫:

// 准备要传给调用方法的参数object[] parameters = GetActionCallParameters(context, info.Action);
登入後複製

【相關推薦】

1. 特別推薦「php程式設計師工具箱」V0.1版本下載

2. ASP免費影片教學

3.  入門級的.NET MVC 實例

4.  MyMVC方塊尋找Action的過程詳解

.NET MyMVC框架處理傳回值的教學

#6. .NET MyMVC架構如何為方法賦值的教學

###

以上是.NET MyMVC架構執行Action的流程詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

DJI Osmo Action 5 Pro:發售日期已定,零售商透露發售價格可能會低於 GoPro Hero 13 Black DJI Osmo Action 5 Pro:發售日期已定,零售商透露發售價格可能會低於 GoPro Hero 13 Black Sep 04, 2024 am 06:51 AM

大疆尚未確認推出新運動相機的計畫。相反,GoPro 今年似乎將領先其競爭對手,並透露將於 9 月 4 日推出兩款新的運動相機。

新款 DJI Osmo 運動相機預計將於 2024 年夏季發布,與最近發布的 GoPro 和 Insta360 相媲美 新款 DJI Osmo 運動相機預計將於 2024 年夏季發布,與最近發布的 GoPro 和 Insta360 相媲美 Jul 01, 2024 am 09:49 AM

自 DJI 發布 Osmo Action 4(亞馬遜售價 299 美元)以來已經過去了近一年。從那時起,該公司開始專注於其他部門,包括新型 RS 相機萬向節。最重要的是,它還推出了各種無人機,例如 Avata

Insta360 Go 3S:新款便攜式 4K 運動相機發布,重量僅 39 克,支援 Apple Find My Insta360 Go 3S:新款便攜式 4K 運動相機發布,重量僅 39 克,支援 Apple Find My Jun 14, 2024 pm 06:05 PM

Insta360 發布了一款新的運動相機,這是繼Insta360X4(亞馬遜售價499.99 美元)之後的第二款運動相機,這是繼Insta360X4(亞馬遜售價499.99 美元)之後的第二款運動相機。錄製功能。

Vuex狀態管理之Action非同步操作詳解 Vuex狀態管理之Action非同步操作詳解 Aug 10, 2022 pm 03:29 PM

某些情況,我們希望在Vuex中進行一些非同步操作, 例如網路請求, 必然是異步的,這個時候怎麼處理呢?下面就給大家介紹Vuex狀態管理之Action異步操作,希望對需要的朋友有所幫助!

GoPro 發表新款 Hero 13 Black 運動攝影機,配備新鏡頭模組以及好奇的 GoPro Hero GoPro 發表新款 Hero 13 Black 運動攝影機,配備新鏡頭模組以及好奇的 GoPro Hero Sep 05, 2024 am 06:45 AM

GoPro 現在推出了年度運動相機更新。與近年來不同的是,該公司決定發布兩款車型。然而,它並沒有回歸 360 度相機,儘管去年這個時候它曾戲稱它將取代 Max wi

elasticsearch java客戶端action怎麼實現 elasticsearch java客戶端action怎麼實現 May 22, 2023 am 08:43 AM

elasticsearch中的絕大部分操作都是透過對應的action,這些action都在action套件中。它的結構如下圖:上圖是action包的部分截圖,這裡面對應著各個功能的action。各個action的包也都非常類似index。這些action的實作也非常類似,都是基礎自action,下圖是indexaction的繼承關係:因為這些action並未真正實現對應的功能,只是一個代理,因此實作上也非常簡單。他們的主要作用是提供新response和request的方法及對應的action

GoPro Hero:新袖珍運動相機外流以及傳聞的發布日期 GoPro Hero:新袖珍運動相機外流以及傳聞的發布日期 Aug 16, 2024 am 09:43 AM

全新 GoPro 運動相機的詳細資訊以及 Hero 13 Black 的相關資訊已在網路上洩露。請注意,據說下麵包含的資訊來自亞馬遜美國列表,該列表現已被刪除

交易 | Amazfit GTR 3 Pro 限量版智慧手錶配備 12 天電池續航力、GPS 和 1,000 尼特 AMOLED,現在只需 125 美元 交易 | Amazfit GTR 3 Pro 限量版智慧手錶配備 12 天電池續航力、GPS 和 1,000 尼特 AMOLED,現在只需 125 美元 Aug 15, 2024 am 11:14 AM

Amazfit GTR 3 Pro 限量版目前在亞馬遜僅售 124.99 美元,比標價 209.99 美元下降了 40%。與標準版的鋁製外殼相比,Amazfit GTR 3 Pro限量版採用了手工拋光染色

See all articles