React to removal of TagHelperContent.ToString()

Avoid calling ToString on a TagHelperContent.

Also react to new properties on TagHelperCodeGenerationContext
This commit is contained in:
Ryan Nowak 2015-09-23 11:09:27 -07:00
parent d8d0a1ab89
commit 80add92de8
3 changed files with 21 additions and 12 deletions

View File

@ -102,6 +102,9 @@ namespace Microsoft.AspNet.Mvc.Razor
// Can't use nameof because IHtmlHelper is (also) not accessible here. // Can't use nameof because IHtmlHelper is (also) not accessible here.
MarkAsHtmlEncodedMethodName = HtmlHelperPropertyName + ".Raw", MarkAsHtmlEncodedMethodName = HtmlHelperPropertyName + ".Raw",
AddHtmlAttributeValuesMethodName = "AddHtmlAttributeValues",
HtmlEncoderPropertyName = "HtmlEncoder",
TagHelperContentGetContentMethodName = nameof(TagHelperContent.GetContent),
}) })
{ {
BeginContextMethodName = "BeginContext", BeginContextMethodName = "BeginContext",

View File

@ -39,7 +39,8 @@ namespace Microsoft.AspNet.Mvc.Razor
v.Write("Hello from Output"); v.Write("Hello from Output");
v.ViewContext.Writer.Write("Hello from view context writer"); v.ViewContext.Writer.Write("Hello from view context writer");
var scopeValue = v.EndTagHelperWritingScope(); var scopeValue = v.EndTagHelperWritingScope();
v.Write("From Scope: " + scopeValue.ToString()); v.Write("From Scope: ");
v.Write(scopeValue);
}); });
// Act // Act
@ -47,8 +48,8 @@ namespace Microsoft.AspNet.Mvc.Razor
var pageOutput = page.Output.ToString(); var pageOutput = page.Output.ToString();
// Assert // Assert
Assert.Equal("HtmlEncode[[Hello Prefix]]HtmlEncode[[From Scope: HtmlEncode[[Hello from Output]]" + Assert.Equal("HtmlEncode[[Hello Prefix]]HtmlEncode[[From Scope: ]]HtmlEncode[[Hello from Output]]" +
"Hello from view context writer]]", pageOutput); "Hello from view context writer", pageOutput);
} }
[Fact] [Fact]
@ -63,7 +64,8 @@ namespace Microsoft.AspNet.Mvc.Razor
v.StartTagHelperWritingScope(); v.StartTagHelperWritingScope();
v.Write("Hello In Scope"); v.Write("Hello In Scope");
var scopeValue = v.EndTagHelperWritingScope(); var scopeValue = v.EndTagHelperWritingScope();
v.Write("From Scope: " + scopeValue.ToString()); v.Write("From Scope: ");
v.Write(scopeValue);
}); });
// Act // Act
@ -71,7 +73,7 @@ namespace Microsoft.AspNet.Mvc.Razor
var pageOutput = page.Output.ToString(); var pageOutput = page.Output.ToString();
// Assert // Assert
Assert.Equal("HtmlEncode[[Hello Prefix]]HtmlEncode[[From Scope: HtmlEncode[[Hello In Scope]]]]", pageOutput); Assert.Equal("HtmlEncode[[Hello Prefix]]HtmlEncode[[From Scope: ]]HtmlEncode[[Hello In Scope]]", pageOutput);
} }
[Fact] [Fact]
@ -93,7 +95,9 @@ namespace Microsoft.AspNet.Mvc.Razor
v.Write("Hello In Scope Post Nest"); v.Write("Hello In Scope Post Nest");
var scopeValue2 = v.EndTagHelperWritingScope(); var scopeValue2 = v.EndTagHelperWritingScope();
v.Write("From Scopes: " + scopeValue2.ToString() + scopeValue1.ToString()); v.Write("From Scopes: ");
v.Write(scopeValue2);
v.Write(scopeValue1);
}); });
// Act // Act
@ -101,8 +105,8 @@ namespace Microsoft.AspNet.Mvc.Razor
var pageOutput = page.Output.ToString(); var pageOutput = page.Output.ToString();
// Assert // Assert
Assert.Equal("HtmlEncode[[Hello Prefix]]HtmlEncode[[From Scopes: HtmlEncode[[Hello In Scope Pre Nest]]" + Assert.Equal("HtmlEncode[[Hello Prefix]]HtmlEncode[[From Scopes: ]]HtmlEncode[[Hello In Scope Pre Nest]]" +
"HtmlEncode[[Hello In Scope Post Nest]]HtmlEncode[[Hello In Nested Scope]]]]", pageOutput); "HtmlEncode[[Hello In Scope Post Nest]]HtmlEncode[[Hello In Nested Scope]]", pageOutput);
} }
[Fact] [Fact]

View File

@ -2,24 +2,27 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNet.Mvc;
using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.Rendering;
using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures;
using Microsoft.AspNet.Mvc.ViewFeatures.Internal; using Microsoft.AspNet.Mvc.ViewFeatures.Internal;
using Microsoft.AspNet.Razor.Runtime.TagHelpers; using Microsoft.AspNet.Razor.Runtime.TagHelpers;
using Microsoft.Framework.WebEncoders;
namespace ActivatorWebSite.TagHelpers namespace ActivatorWebSite.TagHelpers
{ {
[HtmlTargetElement("span")] [HtmlTargetElement("span")]
public class HiddenTagHelper : TagHelper public class HiddenTagHelper : TagHelper
{ {
public HiddenTagHelper(IHtmlHelper htmlHelper) public HiddenTagHelper(IHtmlHelper htmlHelper, IHtmlEncoder htmlEncoder)
{ {
HtmlHelper = htmlHelper; HtmlHelper = htmlHelper;
HtmlEncoder = htmlEncoder;
} }
public IHtmlHelper HtmlHelper { get; } public IHtmlHelper HtmlHelper { get; }
public IHtmlEncoder HtmlEncoder { get; }
[HtmlAttributeNotBound] [HtmlAttributeNotBound]
[ViewContext] [ViewContext]
public ViewContext ViewContext { get; set; } public ViewContext ViewContext { get; set; }
@ -31,8 +34,7 @@ namespace ActivatorWebSite.TagHelpers
(HtmlHelper as ICanHasViewContext)?.Contextualize(ViewContext); (HtmlHelper as ICanHasViewContext)?.Contextualize(ViewContext);
var content = await context.GetChildContentAsync(); var content = await context.GetChildContentAsync();
output.Content.SetContent(HtmlHelper.Hidden(Name, content.GetContent(HtmlEncoder)));
output.Content.SetContent(HtmlHelper.Hidden(Name, content));
} }
} }
} }