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());
}
}
}