源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

ASP.NET MVC 从IHttp到页面输出的实例代码

  • 时间:2020-12-30 02:06 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:ASP.NET MVC 从IHttp到页面输出的实例代码
[u]复制代码[/u] 代码如下:
MVCHandler : IHttpHandler void IHttpHandler.ProcessRequest(HttpContext httpContext) {     this.ProcessRequest(httpContext); } protected virtual void ProcessRequest(HttpContext httpContext) {     HttpContextBase base2 = new HttpContextWrapper(httpContext);     this.ProcessRequest(base2); } protected internal virtual void ProcessRequest(HttpContextBase httpContext) {     IController controller;     IControllerFactory factory;     this.ProcessRequestInit(httpContext, out controller, out factory);     try     {         controller.Execute(this.RequestContext);     }     finally     {         factory.ReleaseController(controller);     } }       
[u]复制代码[/u] 代码如下:
Controller : ControllerBase : IController void IController.Execute(RequestContext requestContext)  //------>Controller {     this.Execute(requestContext); } protected virtual void Execute(RequestContext requestContext)   //------>ControllerBase {     if (requestContext == null)     {         throw new ArgumentNullException("requestContext");     }     if (requestContext.HttpContext == null)     {         throw new ArgumentException(MvcResources.ControllerBase_CannotExecuteWithNullHttpContext, "requestContext");     }     this.VerifyExecuteCalledOnce();     this.Initialize(requestContext);     using (ScopeStorage.CreateTransientScope())     {         this.ExecuteCore();     } } protected override void ExecuteCore()   //------>Controller {     this.PossiblyLoadTempData();     try     {         string requiredString = this.RouteData.GetRequiredString("action");         if (!this.ActionInvoker.InvokeAction(base.ControllerContext, requiredString))   //public IActionInvoker ActionInvoker { get; set; }         {             this.HandleUnknownAction(requiredString);         }     }     finally     {         this.PossiblySaveTempData();     } }
[u]复制代码[/u] 代码如下:
ControllerActionInvoker : IActionInvoker public virtual bool InvokeAction(ControllerContext controllerContext, string actionName) {     if (controllerContext == null)     {         throw new ArgumentNullException("controllerContext");     }     if (string.IsNullOrEmpty(actionName))     {         throw new ArgumentException(MvcResources.Common_NullOrEmpty, "actionName");     }     ControllerDescriptor controllerDescriptor = this.GetControllerDescriptor(controllerContext);     ActionDescriptor actionDescriptor = this.FindAction(controllerContext, controllerDescriptor, actionName);     if (actionDescriptor == null)     {         return false;     }     FilterInfo filters = this.GetFilters(controllerContext, actionDescriptor);     try     {         AuthorizationContext context = this.InvokeAuthorizationFilters(controllerContext, filters.AuthorizationFilters, actionDescriptor);         if (context.Result != null)         {             this.InvokeActionResult(controllerContext, context.Result);         }         else         {             if (controllerContext.Controller.ValidateRequest)             {                 ValidateRequest(controllerContext);             }             IDictionary<string, object> parameterValues = this.GetParameterValues(controllerContext, actionDescriptor);             ActionExecutedContext context2 = this.InvokeActionMethodWithFilters(controllerContext, filters.ActionFilters, actionDescriptor, parameterValues);             this.InvokeActionResultWithFilters(controllerContext, filters.ResultFilters, context2.Result);         }     }     catch (ThreadAbortException)     {         throw;     }     catch (Exception exception)     {         ExceptionContext context3 = this.InvokeExceptionFilters(controllerContext, filters.ExceptionFilters, exception);         if (!context3.ExceptionHandled)         {             throw;         }         this.InvokeActionResult(controllerContext, context3.Result);     }     return true; } protected virtual void InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) {     actionResult.ExecuteResult(controllerContext); }
[u]复制代码[/u] 代码如下:
ActionResult public override void ExecuteResult(ControllerContext context) {     if (context == null)     {         throw new ArgumentNullException("context");     }     if (string.IsNullOrEmpty(this.ViewName))     {         this.ViewName = context.RouteData.GetRequiredString("action");     }     ViewEngineResult result = null;     if (this.View == null)     {         result = this.FindView(context);   //ViewEngineResult         this.View = result.View;    //IView接口        }     TextWriter output = context.HttpContext.Response.Output;     ViewContext viewContext = new ViewContext(context, this.View, this.ViewData, this.TempData, output);     this.View.Render(viewContext, output);     if (result != null)     {         result.ViewEngine.ReleaseView(context, this.View);     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部