Exemple #1
0
        public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
        {
            var virtualPath = base.GetVirtualPath(requestContext, values);

            if (requestContext.HttpContext is ModuleHttpContext)
            {
                var moduleUrl = virtualPath.VirtualPath;

                ModuleHttpContext httpContext = (ModuleHttpContext)(requestContext.HttpContext);
                var moduleContext             = httpContext.ModuleContext;
                if (Page_Context.Current.Initialized)
                {
                    var modulePositionId = Page_Context.Current.PageRequestContext.ModuleUrlContext.GetModulePositionIdForUrl(moduleContext.ModulePosition.ModuleName, moduleContext.ModulePosition.PagePositionId, values);

                    var encodedModuleUrl = ModuleUrlHelper.Encode(moduleUrl);

                    var routeValues = Page_Context.Current.PageRequestContext.ModuleUrlContext.GetRouteValuesWithModuleUrl(modulePositionId, encodedModuleUrl, moduleContext.ModulePosition.Exclusive);

                    virtualPath.VirtualPath = Page_Context.Current.FrontUrl.PageUrl(Page_Context.Current.PageRequestContext.Page.FullName, routeValues).ToString().TrimStart('/');
                }
                else
                {
                    ModuleRequestContext moduleRequestContext = (ModuleRequestContext)requestContext;

                    UrlHelper pageUrl = new UrlHelper(moduleRequestContext.PageControllerContext.RequestContext);

                    virtualPath.VirtualPath = pageUrl.Action(moduleRequestContext.PageControllerContext.RequestContext.RouteData.Values["action"].ToString()
                                                             , moduleRequestContext.PageControllerContext.RequestContext.AllRouteValues().Merge("ModuleUrl", moduleUrl)).TrimStart('/');
                }
            }

            return(virtualPath);
        }
Exemple #2
0
        public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
        {
            var virtualPath = base.GetVirtualPath(requestContext, values);

            if (requestContext.HttpContext is ModuleHttpContext && virtualPath != null)
            {
                var moduleUrl = virtualPath.VirtualPath;

                ModuleHttpContext httpContext = (ModuleHttpContext)(requestContext.HttpContext);
                var moduleContext             = httpContext.ModuleContext;

                var mergedValues = Kooboo.Web.Mvc.RouteValuesHelpers.MergeRouteValues(null, null, this.Defaults, values, true);
                if (Page_Context.Current.Initialized)
                {
                    Page page             = null;
                    var  modulePositionId = Page_Context.Current.PageRequestContext.ModuleUrlContext.GetModulePositionIdForUrl(moduleContext.ModulePosition, mergedValues, out page);

                    var encodedModuleUrl = ModuleUrlHelper.Encode(moduleUrl);

                    var routeValues = Page_Context.Current.PageRequestContext.ModuleUrlContext.GetRouteValuesWithModuleUrl(modulePositionId, encodedModuleUrl, moduleContext.ModulePosition.Exclusive);

                    var pageUrl          = Page_Context.Current.FrontUrl.PageUrl(page.FullName, routeValues).ToString();
                    var routeVirtualPath = pageUrl;
                    if (Uri.IsWellFormedUriString(pageUrl, UriKind.Absolute))
                    {
                        routeVirtualPath = new Uri(routeVirtualPath).PathAndQuery;
                    }
                    virtualPath.VirtualPath = routeVirtualPath.TrimStart('/');
                }
                else
                {
                    ModuleRequestContext moduleRequestContext = (ModuleRequestContext)requestContext;

                    UrlHelper pageUrl = new UrlHelper(moduleRequestContext.PageControllerContext.RequestContext);

                    virtualPath.VirtualPath = pageUrl.Action(moduleRequestContext.PageControllerContext.RequestContext.RouteData.Values["action"].ToString()
                                                             , moduleRequestContext.PageControllerContext.RequestContext.AllRouteValues().Merge("ModuleUrl", moduleUrl)).TrimStart('/');
                }
            }

            return(virtualPath);
        }