public virtual void RenderModule(string moduleId, string skin, string dataVariation, object model, RenderingContext context) { string variation; object variationObj; if (string.IsNullOrEmpty(dataVariation) && context.Data.TryGetValue("data_variation", out variationObj)) { variation = variationObj as string; } else { variation = dataVariation; } var moduleDefinition = _moduleRepository.GetModuleDefinitionByIdAsync(moduleId).Result; if (moduleDefinition != null) { TemplateInfo templateInfo; if (string.IsNullOrEmpty(skin) || moduleDefinition.Skins == null || !moduleDefinition.Skins.TryGetValue(skin, out templateInfo)) { templateInfo = moduleDefinition.DefaultTemplate; } var view = _viewEngine.CreateViewAsync(templateInfo).Result; if (view != null) { var moduleModel = _modelProvider.GetModelForModuleAsync(moduleDefinition, variation).Result; if (context.Data.ContainsKey("siteDefinition") && context.Data.ContainsKey("short_module")) { context.Data["siteDefinition"] = JsonConvert.DeserializeObject <ModuleViewDefinition>(JsonConvert.SerializeObject(moduleModel)); } view.Render(moduleModel, new RenderingContext(context.Writer, context)); return; } } throw new ArgumentException("Problem loading template " + moduleId + (!string.IsNullOrEmpty(skin) ? "-" + skin : string.Empty)); }
public static Task <IView> CreateViewAsync(this IViewEngine viewEngine, TemplateInfo templateInfo) { return(viewEngine.CreateViewAsync(templateInfo, typeof(object))); }