public PageMappedContext MapPage(System.Web.HttpContextBase httpContext, SiteMappedContext siteMappedContext)
        {
            string    matchedPath     = null;
            string    queryStringPath = null;
            PageRoute matchedRoute;
            var       url = siteMappedContext.RequestUrl;

            Page page;

            if (string.IsNullOrEmpty(url) || url == "/")
            {
                page            = GetDefaultPage(siteMappedContext.Site);
                matchedPath     = "/";
                matchedRoute    = page.Routes == null ? null : page.Routes.FirstOrDefault();
                queryStringPath = "";
            }
            else
            {
                string[] paths = url.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);

                var allPages = _pageProvider.All(siteMappedContext.Site);

                page = MatchPage(allPages, paths, out matchedPath, out matchedRoute);
                if (page != null)
                {
                    queryStringPath = url.Remove(0, matchedPath.Length).Trim('/');
                }
            }
            if (page != null)
            {
                return(new PageMappedContext(page, matchedRoute, matchedPath, queryStringPath));
            }
            return(null);
        }
        public FrontHttpContextWrapper(HttpContext httpContext, SiteMappedContext siteMappedContext)
            : base(httpContext)
        {
            _context = httpContext;
            this.SiteMappedContext = siteMappedContext;

            this._request = new FrontHttpRequestWrapper(httpContext.Request, siteMappedContext);
        }
        public FrontHttpContextWrapper(HttpContext httpContext, SiteMappedContext siteMappedContext)
            : base(httpContext)
        {
            _context = httpContext;
            this.SiteMappedContext = siteMappedContext;

            this._request = new FrontHttpRequestWrapper(httpContext.Request, siteMappedContext);
        }
        public PageRequestContext(ControllerContext controllerContext, SiteMappedContext siteMappedContext, PageMappedContext pageMappedContext)
        {
            this.ControllerContext = controllerContext;
            this.SiteMappedContext = siteMappedContext;
            this.PageMappedContext = pageMappedContext;

            this.Site = siteMappedContext.Site;
            this.Page = pageMappedContext.Page;
        }
 public FrontHttpRequestWrapper(HttpRequest httpRequest, SiteMappedContext siteMappedContext)
     : base(httpRequest)
 {
     this._request = httpRequest;
     this.SiteMappedContext = siteMappedContext;
     // 原始的AppRelativeCurrentExecutionFilePath
     appRelativeCurrentExecutionFilePath = httpRequest.AppRelativeCurrentExecutionFilePath;
     RequestUrl = appRelativeCurrentExecutionFilePath.TrimStart('~');
     ResetContext();
 }
 public FrontHttpRequestWrapper(HttpRequest httpRequest, SiteMappedContext siteMappedContext)
     : base(httpRequest)
 {
     this._request          = httpRequest;
     this.SiteMappedContext = siteMappedContext;
     // 原始的AppRelativeCurrentExecutionFilePath
     appRelativeCurrentExecutionFilePath = httpRequest.AppRelativeCurrentExecutionFilePath;
     RequestUrl = appRelativeCurrentExecutionFilePath.TrimStart('~');
     ResetContext();
 }
Beispiel #7
0
 public PageMappedContext MapPage(System.Web.Mvc.ControllerContext controllerContext, SiteMappedContext siteMappedContext)
 {
     return _frontPageService.MapPage(controllerContext.HttpContext, siteMappedContext);
     //var page = new Page(siteMappedContext.Site, "Home");
     //return new PageMappedContext()
     //{
     //    Page = page,
     //    MatchedVirtualPath = "/",
     //    QueryStringPath = ""
     //};
 }
        /// <summary>
        /// 站点请求结束
        /// </summary>
        /// <param name="httpContext"></param>
        public void EndSiteRequest(HttpContextBase httpContext, SiteMappedContext siteMappedContext)
        {
            Contract.Requires(httpContext != null);
            Contract.Requires(siteMappedContext != null);

            foreach (var item in _events)
            {
                item.EndSiteRequest(this, new EndSiteRequestEventArgs(httpContext, siteMappedContext));
            }

            _siteRequestFlow.EndSiteRequest(httpContext, siteMappedContext);
        }
 /// <summary>
 /// Handle the exception
 /// </summary>
 /// <param name="httpContext">The HTTP context.</param>
 /// <param name="site">The site.</param>
 /// <param name="exception">The exception.</param>
 public bool Error(ControllerContext controllerContext, SiteMappedContext siteMappedContext, Exception exception)
 {
     Contract.Requires(controllerContext != null);
     Contract.Requires(exception != null);
     var handled = false;
     foreach (var item in _events)
     {
         var args = new ErrorEventArgs(controllerContext, siteMappedContext, exception);
         item.Error(this, args);
         if (args.ExceptionHandled == true)
         {
             break;
         }
     }
     return handled;
 }
Beispiel #10
0
        /// <summary>
        /// 创建Page_Context
        /// </summary>
        /// <param name="controllerContext"></param>
        /// <param name="site"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        public Page_Context CreatePageContext(ControllerContext controllerContext, SiteMappedContext siteMappedContext, PageMappedContext mappedContext)
        {
            Contract.Requires(controllerContext != null);
            Contract.Requires(siteMappedContext != null);
            Contract.Requires(mappedContext != null);

            foreach (var item in _events)
            {
                item.PreCreatePageContext(this, new PreCreatePageContextEventArgs(controllerContext, siteMappedContext, mappedContext));
            }
            var page_context = _pageRequestFlow.CreatePageContext(controllerContext, siteMappedContext, mappedContext);
            foreach (var item in _events)
            {
                var args = new PostCreatePageContextEventArgs(page_context);
                item.PostCreatePageContext(this, args);
                page_context = args.Page_Context;
            }

            return page_context;
        }
Beispiel #11
0
 public Page_Context CreatePageContext(System.Web.Mvc.ControllerContext controllerContext, SiteMappedContext siteMappedContext, PageMappedContext pageMappedContext)
 {
     var pageRequestContext = new PageRequestContext(controllerContext, siteMappedContext, pageMappedContext);
     return new Page_Context(controllerContext, pageRequestContext);
 }
 public BeginSiteRequestEventArgs(HttpContext httpContext, SiteMappedContext siteMappedContext)
 {
     this.HttpContext = httpContext;
 }
Beispiel #13
0
        /// <summary>
        /// 根据需要创建一个自定义的HttpContext
        /// </summary>
        /// <param name="controllerContext">The controller context.</param>
        /// <param name="siteMappedContext">The site.</param>
        /// <returns></returns>
        public PageMappedContext MapPage(ControllerContext controllerContext, SiteMappedContext siteMappedContext)
        {
            Contract.Requires(controllerContext != null);
            Contract.Requires(siteMappedContext != null);
            foreach (var item in _events)
            {
                item.PreMapPage(this, new PreMapPageEventArgs(controllerContext, siteMappedContext));
            }
            var mappedContext = _pageRequestFlow.MapPage(controllerContext, siteMappedContext);
            foreach (var item in _events)
            {
                var args = new PostMapPageEventArgs(controllerContext, siteMappedContext, mappedContext);
                item.PostMapPage(this, args);
                mappedContext = args.PageMappedContext;
            }

            return mappedContext;
        }
Beispiel #14
0
        /// <summary>
        /// 查找处理请求的Handler
        /// 比如:PageRequestHandler
        /// </summary>
        /// <param name="controllerContext">The HTTP context.</param>
        /// <returns></returns>
        public IRequestHandler MapRequestHandler(ControllerContext controllerContext, SiteMappedContext siteMappedContext)
        {
            Contract.Requires(controllerContext != null);
            Contract.Requires(siteMappedContext != null);

            foreach (var item in _events)
            {
                item.PreMapRequestHandler(this, new PreMapRequestHandlerEventArgs(controllerContext, siteMappedContext));
            }

            var requestHandler = _siteRequestFlow.MapRequestHandler(controllerContext, siteMappedContext);

            foreach (var item in _events)
            {
                item.PostMapRequestHandler(this, new PostMapRequestHandlerEventArgs(controllerContext, siteMappedContext, requestHandler));
            }
            return requestHandler;
        }
Beispiel #15
0
        /// <summary>
        /// 执行Handler
        /// </summary>
        /// <param name="controllerContext">The HTTP context.</param>
        public void ExecuteRequestHandler(ControllerContext controllerContext, SiteMappedContext siteMappedContext, IRequestHandler requestHandler)
        {
            Contract.Requires(controllerContext != null);
            Contract.Requires(siteMappedContext != null);
            Contract.Requires(requestHandler != null);

            foreach (var item in _events)
            {
                item.PreExecuteRequestHandler(this, new PreExecuteRequestHandlerEventArgs(controllerContext, siteMappedContext, requestHandler));
            }

            _siteRequestFlow.ExecuteRequestHandler(controllerContext, requestHandler, siteMappedContext);

            foreach (var item in _events)
            {
                var args = new PostExecuteRequestHandlerEventArgs(controllerContext, siteMappedContext, requestHandler);
                item.PostExecuteRequestHandler(this, args);
            }
        }
Beispiel #16
0
 public PreCreatePageContextEventArgs(ControllerContext controllerContext, SiteMappedContext siteMappedContext, PageMappedContext pageMappedContext)
 {
     this.ControllerContext = controllerContext;
     this.SiteMappedContext = siteMappedContext;
     this.PageMappedContext = pageMappedContext;
 }
 public PreExecuteRequestHandlerEventArgs(ControllerContext controllerContext, SiteMappedContext siteMappedContext, IRequestHandler requestHandler)
 {
     this.ControllerContext = controllerContext;
     this.SiteMappedContext = siteMappedContext;
     this.RequestHandler    = requestHandler;
 }
 public PreMapRequestHandlerEventArgs(ControllerContext controllerContext, SiteMappedContext siteMappedContext)
 {
     this.ControllerContext = controllerContext;
     this.SiteMappedContext = siteMappedContext;
 }
Beispiel #19
0
 public EndSiteRequestEventArgs(HttpContextBase httpContext, SiteMappedContext siteMappedContext)
 {
     this.HttpContext       = httpContext;
     this.SiteMappedContext = siteMappedContext;
 }
Beispiel #20
0
        public Page_Context CreatePageContext(System.Web.Mvc.ControllerContext controllerContext, SiteMappedContext siteMappedContext, PageMappedContext pageMappedContext)
        {
            var pageRequestContext = new PageRequestContext(controllerContext, siteMappedContext, pageMappedContext);

            return(new Page_Context(controllerContext, pageRequestContext));
        }
Beispiel #21
0
 public PageMappedContext MapPage(System.Web.Mvc.ControllerContext controllerContext, SiteMappedContext siteMappedContext)
 {
     return(_frontPageService.MapPage(controllerContext.HttpContext, siteMappedContext));
     //var page = new Page(siteMappedContext.Site, "Home");
     //return new PageMappedContext()
     //{
     //    Page = page,
     //    MatchedVirtualPath = "/",
     //    QueryStringPath = ""
     //};
 }
Beispiel #22
0
 /// <summary>
 /// 根据需要创建一个自定义的HttpContext
 /// </summary>
 /// <param name="httpContext">The HTTP context.</param>
 /// <returns></returns>
 public HttpContextBase RenewHttpContext(HttpContext httpContext, SiteMappedContext siteMappedContext)
 {
     Contract.Requires(httpContext != null);
     foreach (var item in _events)
     {
         item.BeginSiteRequest(this, new BeginSiteRequestEventArgs(httpContext, siteMappedContext));
     }
     var newHttpContext = _siteRequestFlow.RenewHttpContext(httpContext, siteMappedContext);
     return newHttpContext;
 }
Beispiel #23
0
 public PreMapPageEventArgs(ControllerContext controllerContext, SiteMappedContext siteMappedContext)
 {
     this.ControllerContext = controllerContext;
     this.SiteMappedContext = siteMappedContext;
 }
 public PreMapRequestHandlerEventArgs(ControllerContext controllerContext, SiteMappedContext siteMappedContext)
 {
     this.ControllerContext = controllerContext;
     this.SiteMappedContext = siteMappedContext;
 }
 public BeginSiteRequestEventArgs(HttpContext httpContext, SiteMappedContext siteMappedContext)
 {
     this.HttpContext = httpContext;
 }
 /// <summary>
 /// Pres the map site event arguments.
 /// </summary>
 /// <param name="httpContext">The HTTP context.</param>
 public PostMapSiteEventArgs(HttpContext httpContext, SiteMappedContext mappedContext)
 {
     this.HttpContext   = httpContext;
     this.MappedContext = mappedContext;
 }
 public PreExecuteRequestHandlerEventArgs(ControllerContext controllerContext, SiteMappedContext siteMappedContext, IRequestHandler requestHandler)
 {
     this.ControllerContext = controllerContext;
     this.SiteMappedContext = siteMappedContext;
     this.RequestHandler = requestHandler;
 }
Beispiel #28
0
 public PreMapPageEventArgs(ControllerContext controllerContext, SiteMappedContext siteMappedContext)
 {
     this.ControllerContext = controllerContext;
     this.SiteMappedContext = siteMappedContext;
 }
Beispiel #29
0
 protected override void OnActionExecuting(ActionExecutingContext filterContext)
 {
     base.OnActionExecuting(filterContext);
     _siteMappedContext = ((FrontHttpContextWrapper)this.ControllerContext.HttpContext).SiteMappedContext;
 }
Beispiel #30
0
 public ErrorEventArgs(ControllerContext controllerContext, SiteMappedContext siteMappedContext, Exception e)
 {
     this.ControllerContext = controllerContext;
     this.SiteMappedContext = siteMappedContext;
     this.Exception         = e;
 }