/// <summary> /// Perform @Partial partial view expansion /// </summary> /// <param name="template">The template.</param> /// <param name="model">The model.</param> /// <param name="host">View engine host</param> /// <returns>Template with partials expanded</returns> private string PerformPartialSubstitutions(string template, dynamic model, IViewEngineHost host) { var result = template; result = PartialSubstitutionRegEx.Replace( result, m => { var partialViewName = m.Groups["ViewName"].Value; var partialModel = model; var properties = GetCaptureGroupValues(m, "ParameterName"); if (m.Groups["Model"].Length > 0) { var modelValue = GetPropertyValueFromParameterCollection(partialModel, properties); if (modelValue.Item1 != true) { return("[ERR!]"); } partialModel = modelValue.Item2; } var partialTemplate = host.GetTemplate(partialViewName, partialModel); return(this.Render(partialTemplate, partialModel, host)); }); return(result); }
/// <summary> /// Perform @Partial partial view expansion /// /// </summary> /// <param name="template">The template.</param> /// <param name="model">The model.</param> /// <param name="host">View engine host</param> /// <returns>Template with partials expanded</returns> private string PerformPartialSubstitutions(string template, dynamic model, IViewEngineHost host) { //Regex(@"@Partial\['(?<ViewName>[^\]]+)'(?:.[ ]?@?(?<Model>(Model|Current)(?:\.(?<ParameterName>[a-zA-Z0-9-_]+))*))?\];?", RegexOptions.Compiled); var result = template; result = PartialSubstitutionRegEx.Replace( result, m => { var partialViewName = m.Groups["ViewName"].Value; var partialModel = model; var properties = GetCaptureGroupValues(m, "ParameterName"); if (m.Groups["Model"].Length > 0) { var modelValue = GetPropertyValueFromParameterCollection(partialModel, properties); if (modelValue.Item1 != true) { return("[ERR!]"); } partialModel = modelValue.Item2; } var partialTemplate = host.GetTemplate(partialViewName, partialModel); return(this.Render(partialTemplate, partialModel, host)); }); return(result); }
/// <summary> /// Invokes the master page rendering with current sections if necessary /// </summary> /// <param name="template">The template.</param> /// <param name="model">The model.</param> /// <param name="host">View engine host</param> /// <returns>Template with master page applied and sections substituted</returns> private string PerformMasterPageSubstitutions(string template, object model, IViewEngineHost host) { var masterPageName = GetMasterPageName(template); if (string.IsNullOrWhiteSpace(masterPageName)) { return(template); } var masterTemplate = host.GetTemplate(masterPageName, model); var sectionMatches = SectionContentsRegEx.Matches(template); var sections = sectionMatches.Cast <Match>().ToDictionary(sectionMatch => sectionMatch.Groups["SectionName"].Value, sectionMatch => sectionMatch.Groups["SectionContents"].Value); return(this.RenderMasterPage(masterTemplate, sections, model, host)); }
/// <summary> /// Perform @Partial partial view expansion /// </summary> /// <param name="template">The template.</param> /// <param name="model">The model.</param> /// <param name="host">View engine host</param> /// <returns>Template with partials expanded</returns> private string PerformPartialSubstitutions(string template, dynamic model, IViewEngineHost host) { var result = template; result = PartialSubstitutionRegEx.Replace( result, m => { var partialViewName = m.Groups["ViewName"].Value; var partialModel = model; var properties = GetCaptureGroupValues(m, "ParameterName"); if (m.Groups["Model"].Length > 0) { var modelValue = GetPropertyValueFromParameterCollection(partialModel, properties); if (modelValue.Item1 != true) { return "[ERR!]"; } partialModel = modelValue.Item2; } var partialTemplate = host.GetTemplate(partialViewName, partialModel); return this.Render(partialTemplate, partialModel, host); }); return result; }
/// <summary> /// Invokes the master page rendering with current sections if necessary /// </summary> /// <param name="template">The template.</param> /// <param name="model">The model.</param> /// <param name="host">View engine host</param> /// <returns>Template with master page applied and sections substituted</returns> private string PerformMasterPageSubstitutions(string template, object model, IViewEngineHost host) { var masterPageName = GetMasterPageName(template); if (string.IsNullOrWhiteSpace(masterPageName)) { return template; } var masterTemplate = host.GetTemplate(masterPageName, model); var sectionMatches = SectionContentsRegEx.Matches(template); var sections = sectionMatches.Cast<Match>().ToDictionary(sectionMatch => sectionMatch.Groups["SectionName"].Value, sectionMatch => sectionMatch.Groups["SectionContents"].Value); return this.RenderMasterPage(masterTemplate, sections, model, host); }