diff --git a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/DefaultTagHelperContent.cs b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/DefaultTagHelperContent.cs index 80c6c50e62..6b06b93a71 100644 --- a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/DefaultTagHelperContent.cs +++ b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/DefaultTagHelperContent.cs @@ -125,6 +125,12 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers return this; } + public override TagHelperContent AppendEncoded(string value) + { + Buffer.AppendEncoded(value); + return this; + } + /// public override TagHelperContent AppendFormat([NotNull] string format, object arg0) { diff --git a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperContent.cs b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperContent.cs index cf5abd1e3e..742036e93d 100644 --- a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperContent.cs +++ b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperContent.cs @@ -59,6 +59,14 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers /// A reference to this instance after the append operation has completed. public abstract TagHelperContent Append(string value); + /// + /// Appends to the existing content. is assumed + /// to be an HTML encoded and no further encoding will be performed. + /// + /// The to be appended. + /// A reference to this instance after the append operation has completed. + public abstract TagHelperContent AppendEncoded(string value); + /// /// Appends the specified to the existing content after /// replacing the format item with the representation of the diff --git a/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/DefaultTagHelperContentTest.cs b/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/DefaultTagHelperContentTest.cs index af932eb8c3..1671213f33 100644 --- a/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/DefaultTagHelperContentTest.cs +++ b/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/DefaultTagHelperContentTest.cs @@ -613,7 +613,39 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers tagHelperContent.WriteTo(writer, new CommonTestEncoder()); // Assert - Assert.Equal("Hello World", writer.ToString()); + Assert.Equal("HtmlEncode[[Hello ]]HtmlEncode[[World]]", writer.ToString()); + } + + [Fact] + public void Append_WrittenAsEncoded() + { + // Arrange + var tagHelperContent = new DefaultTagHelperContent(); + tagHelperContent.Append("Hi"); + + var writer = new StringWriter(); + + // Act + tagHelperContent.WriteTo(writer, new CommonTestEncoder()); + + // Assert + Assert.Equal("HtmlEncode[[Hi]]", writer.ToString()); + } + + [Fact] + public void AppendEncoded_DoesNotGetEncoded() + { + // Arrange + var tagHelperContent = new DefaultTagHelperContent(); + tagHelperContent.AppendEncoded("Hi"); + + var writer = new StringWriter(); + + // Act + tagHelperContent.WriteTo(writer, new CommonTestEncoder()); + + // Assert + Assert.Equal("Hi", writer.ToString()); } } }