public void Should_render_only_its_children() { var fragment = new HtmlFragment(); fragment.Children.Add(new HtmlElement("a")); fragment.ToString().ShouldEqual("<a></a>"); }
/// <summary> /// Renders the HTML fragment. /// </summary> /// <param name="htmlHelper">The HTML helper.</param> /// <param name="fragment">The fragment.</param> /// <param name="partialViewName">The partial view name.</param> /// <param name="useFallback">if set to <c>true</c> [use fallback].</param> /// <param name="renderFragmentsWithoutView">if set to <c>true</c> [render fragments without view].</param> /// <returns>A HTML-encoded string.</returns> public static MvcHtmlString RenderCustomHtmlFragment(this HtmlHelper htmlHelper, HtmlFragment fragment, string partialViewName, bool useFallback = true, bool renderFragmentsWithoutView = true) { var value = new StringBuilder(); using (var writer = new StringWriter(value)) { // Try to find a matching partial view var viewEngineResult = ViewEngines.Engines.FindPartialView(htmlHelper.ViewContext, partialViewName); if (viewEngineResult.View != null) { viewEngineResult.View.Render(viewEngineResult, htmlHelper.ViewContext, writer, fragment); } else { // Try to fall back to default view if (useFallback) { return(htmlHelper.RenderCustomHtmlFragment(fragment, renderFragmentsWithoutView)); } // Render fragment directly unless otherwise specified if (renderFragmentsWithoutView) { writer.Write(fragment.ToString()); } } } return(value.Length <= 0 ? MvcHtmlString.Empty : new MvcHtmlString(value.ToString().Trim())); }