注重: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的历程详解
5. .NET MyMVC框架处置惩罚返回值的教程
6. .NET MyMVC框架怎样给要领赋值的教程
以上就是.NET MyMVC框架实行Action的历程详解的细致内容,更多请关注ki4网别的相干文章!