diff --git a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/DefaultTagHelperContent.cs b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/DefaultTagHelperContent.cs
index fd06bf7a47..edb31dcb2e 100644
--- a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/DefaultTagHelperContent.cs
+++ b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/DefaultTagHelperContent.cs
@@ -3,7 +3,9 @@
using System;
using System.Collections.Generic;
+using System.IO;
using Microsoft.Framework.Internal;
+using Microsoft.Framework.WebEncoders;
namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
@@ -208,5 +210,14 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
// can use this to iterate through the values of the buffer.
return _buffer.GetEnumerator();
}
+
+ ///
+ public override void WriteTo(TextWriter writer, IHtmlEncoder encoder)
+ {
+ foreach (var entry in _buffer)
+ {
+ writer.Write(entry);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperContent.cs b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperContent.cs
index c422089763..e5cb6509a1 100644
--- a/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperContent.cs
+++ b/src/Microsoft.AspNet.Razor.Runtime/TagHelpers/TagHelperContent.cs
@@ -4,13 +4,16 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using System.IO;
+using Microsoft.AspNet.Html.Abstractions;
+using Microsoft.Framework.WebEncoders;
namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
///
/// Abstract class used to buffer content returned by s.
///
- public abstract class TagHelperContent : IEnumerable
+ public abstract class TagHelperContent : IEnumerable, IHtmlContent
{
///
/// Gets a value indicating whether the content was modifed.
@@ -191,5 +194,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
return GetEnumerator();
}
+
+ ///
+ public abstract void WriteTo(TextWriter writer, IHtmlEncoder encoder);
}
}
\ No newline at end of file
diff --git a/src/Microsoft.AspNet.Razor.Runtime/project.json b/src/Microsoft.AspNet.Razor.Runtime/project.json
index ac18c4734a..5aa9488534 100644
--- a/src/Microsoft.AspNet.Razor.Runtime/project.json
+++ b/src/Microsoft.AspNet.Razor.Runtime/project.json
@@ -6,6 +6,7 @@
"url": "git://github.com/aspnet/razor"
},
"dependencies": {
+ "Microsoft.AspNet.Html.Abstractions": "1.0.0-*",
"Microsoft.AspNet.Razor": "4.0.0-*",
"Microsoft.Framework.BufferEntryCollection.Sources": { "type": "build", "version": "1.0.0-*" },
"Microsoft.Framework.ClosedGenericMatcher.Sources": { "type": "build", "version": "1.0.0-*" },
diff --git a/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/DefaultTagHelperContentTest.cs b/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/DefaultTagHelperContentTest.cs
index 546cdf3468..3a9cb11fb0 100644
--- a/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/DefaultTagHelperContentTest.cs
+++ b/test/Microsoft.AspNet.Razor.Runtime.Test/TagHelpers/DefaultTagHelperContentTest.cs
@@ -3,8 +3,11 @@
using System;
using System.Globalization;
+using System.IO;
using System.Linq;
using Microsoft.AspNet.Testing;
+using Microsoft.Framework.WebEncoders;
+using Microsoft.Framework.WebEncoders.Testing;
using Xunit;
namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
@@ -622,5 +625,21 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
// Assert
Assert.Equal(expected, tagHelperContent.GetContent());
}
+
+ [Fact]
+ public void WriteTo_WritesToATextWriter()
+ {
+ // Arrange
+ var tagHelperContent = new DefaultTagHelperContent();
+ var writer = new StringWriter();
+ tagHelperContent.SetContent("Hello ");
+ tagHelperContent.Append("World");
+
+ // Act
+ tagHelperContent.WriteTo(writer, new CommonTestEncoder());
+
+ // Assert
+ Assert.Equal("Hello World", writer.ToString());
+ }
}
}
diff --git a/test/Microsoft.AspNet.Razor.Runtime.Test/project.json b/test/Microsoft.AspNet.Razor.Runtime.Test/project.json
index a37a57bfe0..d65fa4cd84 100644
--- a/test/Microsoft.AspNet.Razor.Runtime.Test/project.json
+++ b/test/Microsoft.AspNet.Razor.Runtime.Test/project.json
@@ -1,24 +1,25 @@
{
- "version": "1.0.0",
- "dependencies": {
- "Microsoft.AspNet.Razor.Runtime": "4.0.0-*",
- "Microsoft.AspNet.Testing": "1.0.0-*",
- "xunit.runner.aspnet": "2.0.0-aspnet-*"
- },
- "commands": {
- "test": "xunit.runner.aspnet"
- },
- "frameworks": {
- "dnx451": {
- "dependencies": {
- "Moq": "4.2.1312.1622"
- }
+ "version": "1.0.0",
+ "dependencies": {
+ "Microsoft.AspNet.Razor.Runtime": "4.0.0-*",
+ "Microsoft.AspNet.Testing": "1.0.0-*",
+ "Microsoft.Framework.WebEncoders.Testing": "1.0.0-*",
+ "xunit.runner.aspnet": "2.0.0-aspnet-*"
},
- "dnxcore50": {
- "dependencies": {
- "System.Reflection.TypeExtensions": "4.0.0-beta-*",
- "System.Runtime.Extensions": "4.0.10-beta-*"
- }
+ "commands": {
+ "test": "xunit.runner.aspnet"
+ },
+ "frameworks": {
+ "dnx451": {
+ "dependencies": {
+ "Moq": "4.2.1312.1622"
+ }
+ },
+ "dnxcore50": {
+ "dependencies": {
+ "System.Reflection.TypeExtensions": "4.0.0-beta-*",
+ "System.Runtime.Extensions": "4.0.10-beta-*"
+ }
+ }
}
- }
}