public IViewEngine CreateModulesViewEngine(CreateModulesViewEngineParams parameters) { var areaFormats = new[] { "~/Core/{2}/Views/{1}/{0}.cshtml", "~/Modules/{2}/Views/{1}/{0}.cshtml", "~/Themes/{2}/Views/{1}/{0}.cshtml", }; //Logger.Debug("AreaFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", areaFormats)); var universalFormats = parameters.VirtualPaths .SelectMany(x => new[] { x + "/Views/{0}.cshtml", }) .ToArray(); //Logger.Debug("UniversalFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", universalFormats)); var viewEngine = new RazorViewEngine { MasterLocationFormats = DisabledFormats, ViewLocationFormats = universalFormats, PartialViewLocationFormats = universalFormats, AreaMasterLocationFormats = DisabledFormats, AreaViewLocationFormats = areaFormats, AreaPartialViewLocationFormats = areaFormats, }; return viewEngine; }
public IViewEngine CreateModulesViewEngine(CreateModulesViewEngineParams parameters) { var areaFormats = new[] { "~/Core/{2}/Views/{1}/{0}.cshtml", "~/Modules/{2}/Views/{1}/{0}.cshtml", "~/Themes/{2}/Views/{1}/{0}.cshtml", }; //Logger.Debug("AreaFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", areaFormats)); var universalFormats = parameters.VirtualPaths .SelectMany(x => new[] { x + "/Views/{0}.cshtml", }) .ToArray(); //Logger.Debug("UniversalFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", universalFormats)); var viewEngine = new RazorViewEngine { MasterLocationFormats = DisabledFormats, ViewLocationFormats = universalFormats, PartialViewLocationFormats = universalFormats, AreaMasterLocationFormats = DisabledFormats, AreaViewLocationFormats = areaFormats, AreaPartialViewLocationFormats = areaFormats, }; return(viewEngine); }
private IViewEngine DeepEngines(ExtensionDescriptor theme) { return(_configuredEnginesCache.BindDeepEngines(theme.Id, () => { // The order for searching for views is: // 1. Current "theme" // 2. Base themes of the current theme (in "base" order) // 3. Active features from modules in dependency order var engines = Enumerable.Empty <IViewEngine>(); // 1. current theme engines = engines.Concat(CreateThemeViewEngines(theme)); // 2. Base themes of the current theme (in "base" order) engines = GetBaseThemes(theme).Aggregate(engines, (current, baseTheme) => current.Concat(CreateThemeViewEngines(baseTheme))); // 3. Active features from modules in dependency order var enabledModules = _extensionManager.EnabledFeatures(_shellDescriptor) .Reverse() // reverse from (C <= B <= A) to (A => B => C) .Where(fd => DefaultExtensionTypes.IsModule(fd.Extension.ExtensionType)); var allLocations = enabledModules.Concat(enabledModules) .Select(fd => fd.Extension.Location + "/" + fd.Extension.Id) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); var moduleParams = new CreateModulesViewEngineParams { VirtualPaths = allLocations }; engines = engines.Concat(_viewEngineProviders.Select(vep => vep.CreateModulesViewEngine(moduleParams))); return new ViewEngineCollectionWrapper(engines); })); }
public IViewEngine CreateModulesViewEngine(CreateModulesViewEngineParams parameters) { //TBD: It would probably be better to determined the area deterministically from the module of the controller, not by trial and error. var areaFormats = parameters.ExtensionLocations.Select(location => location + "/{2}/Views/{1}/{0}.cshtml").ToArray(); //Logger.Debug("AreaFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", areaFormats)); var universalFormats = parameters.VirtualPaths .SelectMany(x => new[] { x + "/Views/{0}.cshtml", }) .ToArray(); //Logger.Debug("UniversalFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", universalFormats)); var viewEngine = new RazorViewEngine { MasterLocationFormats = DisabledFormats, ViewLocationFormats = universalFormats, PartialViewLocationFormats = universalFormats, AreaMasterLocationFormats = DisabledFormats, AreaViewLocationFormats = areaFormats, AreaPartialViewLocationFormats = areaFormats, }; return(viewEngine); }
public IViewEngine CreateModulesViewEngine(CreateModulesViewEngineParams parameters) { var areaFormats = new[] { "~/Core/{2}/Views/{1}/{0}.liquid", "~/Modules/{2}/Views/{1}/{0}.liquid", "~/Themes/{2}/Views/{1}/{0}.liquid", }; var universalFormats = parameters.VirtualPaths .SelectMany( x => new[] { x + "/Views/{0}.liquid", }) .ToArray(); var viewEngine = new LiquidViewEngine(_liquidTemplateServiceWork) { MasterLocationFormats = DisabledFormats, ViewLocationFormats = universalFormats, PartialViewLocationFormats = universalFormats, AreaMasterLocationFormats = DisabledFormats, AreaViewLocationFormats = areaFormats, AreaPartialViewLocationFormats = areaFormats, }; return(viewEngine); }
public IViewEngine CreateModulesViewEngine(CreateModulesViewEngineParams parameters) { //TBD: It would probably be better to determined the area deterministically from the module of the controller, not by trial and error. var areaFormats = parameters.ExtensionLocations.Select(location => location + "/{2}/Views/{1}/{0}.cshtml").ToArray(); //Logger.Debug("AreaFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", areaFormats)); var universalFormats = parameters.VirtualPaths .SelectMany(x => new[] { x + "/Views/{0}.cshtml", }) .ToArray(); //Logger.Debug("UniversalFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", universalFormats)); var viewEngine = new RazorViewEngine { MasterLocationFormats = DisabledFormats, ViewLocationFormats = universalFormats, PartialViewLocationFormats = universalFormats, AreaMasterLocationFormats = DisabledFormats, AreaViewLocationFormats = areaFormats, AreaPartialViewLocationFormats = areaFormats, }; return viewEngine; }
private IViewEngine DeepEngines(ExtensionDescriptorEntry theme) { return(_configuredEnginesCache.BindDeepEngines(theme.Id, () => { // 搜索视图顺序: // 1. 当前主图 // 2. 基础主题 // 3. 来自模块激活功能依赖排序 var engines = Enumerable.Empty <IViewEngine>(); // 1. 当前主题 engines = engines.Concat(CreateThemeViewEngines(theme)); // 2. 基础主题 engines = GetBaseThemes(theme).Aggregate(engines, (current, baseTheme) => current.Concat(CreateThemeViewEngines(baseTheme))); // 3. 来自模块激活功能依赖排序 var enabledModules = _extensionManager.EnabledFeatures(_shellDescriptor) .Reverse() // reverse from (C <= B <= A) to (A => B => C) .Where(fd => DefaultExtensionTypes.IsModule(fd.Extension.ExtensionType)).ToArray(); var allLocations = enabledModules.Concat(enabledModules) .Select(fd => fd.Extension.Location + "/" + fd.Extension.Id) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); var moduleParams = new CreateModulesViewEngineParams { VirtualPaths = allLocations }; engines = engines.Concat(_viewEngineProviders.Select(vep => vep.CreateModulesViewEngine(moduleParams))); return new ViewEngineCollectionWrapper(engines); })); }
/// <summary> /// 创建模块视图引擎。 /// </summary> /// <param name="parameters">创建模块视图引擎所需的参数。</param> /// <returns>视图引擎。</returns> public IViewEngine CreateModulesViewEngine(CreateModulesViewEngineParams parameters) { var areaFormats = new[] { "~/Core/{2}/Views/{1}/{0}.cshtml", "~/Modules/{2}/Views/{1}/{0}.cshtml", "~/Themes/{2}/Views/{1}/{0}.cshtml", }; var universalFormats = parameters.VirtualPaths .SelectMany(x => new[] { x + "/Views/{0}.cshtml", }) .ToArray(); var viewEngine = new RazorViewEngine { MasterLocationFormats = DisabledFormats, ViewLocationFormats = universalFormats, PartialViewLocationFormats = universalFormats, AreaMasterLocationFormats = DisabledFormats, AreaViewLocationFormats = areaFormats, AreaPartialViewLocationFormats = areaFormats, }; return viewEngine; }
public IViewEngine CreateModulesViewEngine(CreateModulesViewEngineParams parameters) { // Below three lines copied from RazorViewEngineProvider. Must revisit if that class changes. // TBD: It would probably be better to determined the area deterministically from the module of the controller, // not by trial and error. var areaFormats = parameters.ExtensionLocations.Select(location => location + "/{2}/Views/{1}/{0}.liquid").ToArray(); var universalFormats = parameters.VirtualPaths .SelectMany( x => new[] { x + "/Views/{0}.liquid", }) .ToArray(); var viewEngine = new LiquidViewEngine(_liquidTemplateServiceWork) { MasterLocationFormats = DisabledFormats, ViewLocationFormats = universalFormats, PartialViewLocationFormats = universalFormats, AreaMasterLocationFormats = DisabledFormats, AreaViewLocationFormats = areaFormats, AreaPartialViewLocationFormats = areaFormats, }; return(viewEngine); }
public IViewEngine CreateModulesViewEngine(CreateModulesViewEngineParams parameters) { var areaFormats = new[] { "~/Modules/{2}/Views/{1}/{0}.cshtml", "~/Themes/{2}/Views/{1}/{0}.cshtml", "~/Views/Shared/{0}.cshtml" }; var universalFormats = parameters.VirtualPaths .SelectMany(x => new[] { x + "/{1}/{0}.cshtml", x + "/Shared/{0}.cshtml" }) .ToArray(); var viewEngine = new RazorViewEngine { MasterLocationFormats = disabledFormats, ViewLocationFormats = universalFormats, PartialViewLocationFormats = universalFormats, AreaMasterLocationFormats = disabledFormats, AreaViewLocationFormats = areaFormats, AreaPartialViewLocationFormats = areaFormats, }; return(viewEngine); }
public IViewEngine CreateModulesViewEngine(CreateModulesViewEngineParams parameters) { var areaFormats = new[] { "~/Core/{2}/Views/{1}/{0}.cshtml", "~/Modules/{2}/Views/{1}/{0}.cshtml" }; //Logger.Debug("AreaFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", areaFormats)); //基本上不再用了 //var universalFormats = parameters.VirtualPaths // .SelectMany(x => new[] { // x + "/Views/{0}.cshtml", // }) // .ToArray(); var viewFormat = new[] { "~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.cshtml" }; var masterLocationFormat = new[] { "~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.cshtml" }; var areaMasterLocationFormats = new[] { "~/Core/{2}/Views/Shared/{0}.cshtml", "~/Modules/{2}/Views/Shared/{0}.cshtml" }.ToList(); var partialViewFormats = parameters.VirtualPaths .SelectMany(x => new[] { x + "/Views/Shared/{0}.cshtml", }).ToArray(); ; areaMasterLocationFormats.AddRange(parameters.VirtualPaths .SelectMany(x => new[] { x + "/Views/Shared/{0}.cshtml", })); //Logger.Debug("UniversalFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", universalFormats)); var viewEngine = new RazorViewEngine { MasterLocationFormats = masterLocationFormat, ViewLocationFormats = viewFormat, PartialViewLocationFormats = partialViewFormats, AreaMasterLocationFormats = areaMasterLocationFormats.ToArray(), AreaViewLocationFormats = areaFormats, AreaPartialViewLocationFormats = areaFormats, }; return(viewEngine); }
public IViewEngine CreateModulesViewEngine(CreateModulesViewEngineParams parameters) { var areaFormats = new[] { "~/Core/{2}/Views/{1}/{0}.cshtml", "~/Modules/{2}/Views/{1}/{0}.cshtml" }; //Logger.Debug("AreaFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", areaFormats)); //基本上不再用了 //var universalFormats = parameters.VirtualPaths // .SelectMany(x => new[] { // x + "/Views/{0}.cshtml", // }) // .ToArray(); var viewFormat = new[] { "~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.cshtml" }; var masterLocationFormat = new[] { "~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.cshtml" }; var areaMasterLocationFormats = new[] { "~/Core/{2}/Views/Shared/{0}.cshtml", "~/Modules/{2}/Views/Shared/{0}.cshtml" }.ToList(); var partialViewFormats = parameters.VirtualPaths .SelectMany(x => new[] { x + "/Views/Shared/{0}.cshtml", }).ToArray(); ; areaMasterLocationFormats.AddRange(parameters.VirtualPaths .SelectMany(x => new[] { x + "/Views/Shared/{0}.cshtml", })); //Logger.Debug("UniversalFormats (module): \r\n\t-{0}", string.Join("\r\n\t-", universalFormats)); var viewEngine = new RazorViewEngine { MasterLocationFormats = masterLocationFormat, ViewLocationFormats = viewFormat, PartialViewLocationFormats = partialViewFormats, AreaMasterLocationFormats = areaMasterLocationFormats.ToArray(), AreaViewLocationFormats = areaFormats, AreaPartialViewLocationFormats = areaFormats, }; return viewEngine; }
private IViewEngine DeepEngines(ExtensionDescriptor theme) { return _configuredEnginesCache.BindDeepEngines(theme.Id, () => { // The order for searching for views is: // 1. Current "theme" // 2. Base themes of the current theme (in "base" order) // 3. Active features from modules in dependency order var engines = Enumerable.Empty<IViewEngine>(); // 1. current theme engines = engines.Concat(CreateThemeViewEngines(theme)); // 2. Base themes of the current theme (in "base" order) engines = GetBaseThemes(theme).Aggregate(engines, (current, baseTheme) => current.Concat(CreateThemeViewEngines(baseTheme))); // 3. Active features from modules in dependency order var enabledModules = _extensionManager.EnabledFeatures(_shellDescriptor) .Reverse() // reverse from (C <= B <= A) to (A => B => C) .Where(fd => DefaultExtensionTypes.IsModule(fd.Extension.ExtensionType)); var allLocations = enabledModules.Concat(enabledModules) .Select(fd => fd.Extension.Location + "/" + fd.Extension.Id) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); var moduleParams = new CreateModulesViewEngineParams { VirtualPaths = allLocations }; engines = engines.Concat(_viewEngineProviders.Select(vep => vep.CreateModulesViewEngine(moduleParams))); return new ViewEngineCollectionWrapper(engines); }); }
private IViewEngine DeepEngines(ExtensionDescriptorEntry theme) { return _configuredEnginesCache.BindDeepEngines(theme.Id, () => { // 搜索视图顺序: // 1. 当前主图 // 2. 基础主题 // 3. 来自模块激活功能依赖排序 var engines = Enumerable.Empty<IViewEngine>(); // 1. 当前主题 engines = engines.Concat(CreateThemeViewEngines(theme)); // 2. 基础主题 engines = GetBaseThemes(theme).Aggregate(engines, (current, baseTheme) => current.Concat(CreateThemeViewEngines(baseTheme))); // 3. 来自模块激活功能依赖排序 var enabledModules = _extensionManager.EnabledFeatures(_shellDescriptor) .Reverse() // reverse from (C <= B <= A) to (A => B => C) .Where(fd => DefaultExtensionTypes.IsModule(fd.Extension.ExtensionType)).ToArray(); var allLocations = enabledModules.Concat(enabledModules) .Select(fd => fd.Extension.Location + "/" + fd.Extension.Id) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); var moduleParams = new CreateModulesViewEngineParams { VirtualPaths = allLocations }; engines = engines.Concat(_viewEngineProviders.Select(vep => vep.CreateModulesViewEngine(moduleParams))); return new ViewEngineCollectionWrapper(engines); }); }