/// <summary> /// Writes the specified <paramref name="value"/> with HTML encoding to given <paramref name="content"/>. /// </summary> /// <param name="content">The <see cref="TagHelperContent"/> to write to.</param> /// <param name="encoder">The <see cref="IHtmlEncoder"/> to use when encoding <paramref name="value"/>.</param> /// <param name="encoding">The character encoding in which the <paramref name="value"/> is written.</param> /// <param name="value">The <see cref="object"/> to write.</param> /// <returns><paramref name="content"/> after the write operation has completed.</returns> /// <remarks> /// <paramref name="value"/>s of type <see cref="Html.Abstractions.IHtmlContent"/> are written using /// <see cref="Html.Abstractions.IHtmlContent.WriteTo(System.IO.TextWriter, IHtmlEncoder)"/>. /// For all other types, the encoded result of <see cref="object.ToString"/> /// is written to the <paramref name="content"/>. /// </remarks> public static TagHelperContent Append( this TagHelperContent content, IHtmlEncoder encoder, Encoding encoding, object value) { if (content == null) { throw new ArgumentNullException(nameof(content)); } if (encoder == null) { throw new ArgumentNullException(nameof(encoder)); } if (encoding == null) { throw new ArgumentNullException(nameof(encoding)); } using (var writer = new TagHelperContentWrapperTextWriter(encoding, content)) { RazorPage.WriteTo(writer, encoder, value, escapeQuotes: true); } return content; }
/// <summary> /// Writes the specified <paramref name="value"/> with HTML encoding to given <paramref name="content"/>. /// </summary> /// <param name="content">The <see cref="TagHelperContent"/> to write to.</param> /// <param name="encoder">The <see cref="IHtmlEncoder"/> to use when encoding <paramref name="value"/>.</param> /// <param name="encoding">The character encoding in which the <paramref name="value"/> is written.</param> /// <param name="value">The <see cref="object"/> to write.</param> /// <returns><paramref name="content"/> after the write operation has completed.</returns> /// <remarks> /// <paramref name="value"/>s of type <see cref="Rendering.HtmlString"/> are written without encoding and /// <see cref="HelperResult.WriteTo"/> is invoked for <see cref="HelperResult"/> types. For all other types, /// the encoded result of <see cref="object.ToString"/> is written to the <paramref name="content"/>. /// </remarks> public static TagHelperContent Append( [NotNull] this TagHelperContent content, [NotNull] IHtmlEncoder encoder, [NotNull] Encoding encoding, object value) { using (var writer = new TagHelperContentWrapperTextWriter(encoding, content)) { RazorPage.WriteTo(writer, encoder, value, escapeQuotes: true); } return content; }
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { output.TagName = null; var partialResult = _viewEngine.FindPartialView(ViewContext, Name); if (partialResult != null && partialResult.Success) { var partialViewData = new ViewDataDictionary(ViewContext.ViewData, Model); var partialWriter = new TagHelperContentWrapperTextWriter(ViewContext.Writer.Encoding, output.Content); var partialViewContext = new ViewContext(ViewContext, partialResult.View, partialViewData, partialWriter); await partialResult.View.RenderAsync(partialViewContext); } }
/// <summary> /// Ends the current writing scope that was started by calling <see cref="StartTagHelperWritingScope"/>. /// </summary> /// <returns>The <see cref="TextWriter"/> that contains the content written to the <see cref="Output"/> or /// <see cref="ViewContext.Writer"/> during the writing scope.</returns> public TagHelperContent EndTagHelperWritingScope() { if (_writerScopes.Count == 0) { throw new InvalidOperationException(Resources.RazorPage_ThereIsNoActiveWritingScopeToEnd); } var writer = _writerScopes.Pop(); if (_writerScopes.Count > 0) { ViewContext.Writer = _writerScopes.Peek(); } else { ViewContext.Writer = _originalWriter; // No longer a base writer _originalWriter = null; } var tagHelperContentWrapperTextWriter = new TagHelperContentWrapperTextWriter(Output.Encoding); var razorWriter = writer as RazorTextWriter; if (razorWriter != null) { razorWriter.CopyTo(tagHelperContentWrapperTextWriter); } else { var stringCollectionTextWriter = writer as StringCollectionTextWriter; if (stringCollectionTextWriter != null) { stringCollectionTextWriter.CopyTo(tagHelperContentWrapperTextWriter); } else { tagHelperContentWrapperTextWriter.Write(writer.ToString()); } } return(tagHelperContentWrapperTextWriter.Content); }