From 80add92de8ad839e26dba236c873f51ef039740d Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Wed, 23 Sep 2015 11:09:27 -0700 Subject: [PATCH] React to removal of TagHelperContent.ToString() Avoid calling ToString on a TagHelperContent. Also react to new properties on TagHelperCodeGenerationContext --- .../MvcRazorHost.cs | 3 +++ .../RazorPageTest.cs | 20 +++++++++++-------- .../TagHelpers/HiddenTagHelper.cs | 10 ++++++---- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorHost.cs b/src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorHost.cs index fd8b80bb00..3741b3c16b 100644 --- a/src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorHost.cs +++ b/src/Microsoft.AspNet.Mvc.Razor.Host/MvcRazorHost.cs @@ -102,6 +102,9 @@ namespace Microsoft.AspNet.Mvc.Razor // Can't use nameof because IHtmlHelper is (also) not accessible here. MarkAsHtmlEncodedMethodName = HtmlHelperPropertyName + ".Raw", + AddHtmlAttributeValuesMethodName = "AddHtmlAttributeValues", + HtmlEncoderPropertyName = "HtmlEncoder", + TagHelperContentGetContentMethodName = nameof(TagHelperContent.GetContent), }) { BeginContextMethodName = "BeginContext", diff --git a/test/Microsoft.AspNet.Mvc.Razor.Test/RazorPageTest.cs b/test/Microsoft.AspNet.Mvc.Razor.Test/RazorPageTest.cs index 2ec359a058..0eb21c686d 100644 --- a/test/Microsoft.AspNet.Mvc.Razor.Test/RazorPageTest.cs +++ b/test/Microsoft.AspNet.Mvc.Razor.Test/RazorPageTest.cs @@ -39,7 +39,8 @@ namespace Microsoft.AspNet.Mvc.Razor v.Write("Hello from Output"); v.ViewContext.Writer.Write("Hello from view context writer"); var scopeValue = v.EndTagHelperWritingScope(); - v.Write("From Scope: " + scopeValue.ToString()); + v.Write("From Scope: "); + v.Write(scopeValue); }); // Act @@ -47,8 +48,8 @@ namespace Microsoft.AspNet.Mvc.Razor var pageOutput = page.Output.ToString(); // Assert - Assert.Equal("HtmlEncode[[Hello Prefix]]HtmlEncode[[From Scope: HtmlEncode[[Hello from Output]]" + - "Hello from view context writer]]", pageOutput); + Assert.Equal("HtmlEncode[[Hello Prefix]]HtmlEncode[[From Scope: ]]HtmlEncode[[Hello from Output]]" + + "Hello from view context writer", pageOutput); } [Fact] @@ -63,7 +64,8 @@ namespace Microsoft.AspNet.Mvc.Razor v.StartTagHelperWritingScope(); v.Write("Hello In Scope"); var scopeValue = v.EndTagHelperWritingScope(); - v.Write("From Scope: " + scopeValue.ToString()); + v.Write("From Scope: "); + v.Write(scopeValue); }); // Act @@ -71,7 +73,7 @@ namespace Microsoft.AspNet.Mvc.Razor var pageOutput = page.Output.ToString(); // 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] @@ -93,7 +95,9 @@ namespace Microsoft.AspNet.Mvc.Razor v.Write("Hello In Scope Post Nest"); var scopeValue2 = v.EndTagHelperWritingScope(); - v.Write("From Scopes: " + scopeValue2.ToString() + scopeValue1.ToString()); + v.Write("From Scopes: "); + v.Write(scopeValue2); + v.Write(scopeValue1); }); // Act @@ -101,8 +105,8 @@ namespace Microsoft.AspNet.Mvc.Razor var pageOutput = page.Output.ToString(); // Assert - 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); + 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); } [Fact] diff --git a/test/WebSites/ActivatorWebSite/TagHelpers/HiddenTagHelper.cs b/test/WebSites/ActivatorWebSite/TagHelpers/HiddenTagHelper.cs index 22f12a9d49..cde171f696 100644 --- a/test/WebSites/ActivatorWebSite/TagHelpers/HiddenTagHelper.cs +++ b/test/WebSites/ActivatorWebSite/TagHelpers/HiddenTagHelper.cs @@ -2,24 +2,27 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Threading.Tasks; -using Microsoft.AspNet.Mvc; using Microsoft.AspNet.Mvc.Rendering; using Microsoft.AspNet.Mvc.ViewFeatures; using Microsoft.AspNet.Mvc.ViewFeatures.Internal; using Microsoft.AspNet.Razor.Runtime.TagHelpers; +using Microsoft.Framework.WebEncoders; namespace ActivatorWebSite.TagHelpers { [HtmlTargetElement("span")] public class HiddenTagHelper : TagHelper { - public HiddenTagHelper(IHtmlHelper htmlHelper) + public HiddenTagHelper(IHtmlHelper htmlHelper, IHtmlEncoder htmlEncoder) { HtmlHelper = htmlHelper; + HtmlEncoder = htmlEncoder; } public IHtmlHelper HtmlHelper { get; } + public IHtmlEncoder HtmlEncoder { get; } + [HtmlAttributeNotBound] [ViewContext] public ViewContext ViewContext { get; set; } @@ -31,8 +34,7 @@ namespace ActivatorWebSite.TagHelpers (HtmlHelper as ICanHasViewContext)?.Contextualize(ViewContext); var content = await context.GetChildContentAsync(); - - output.Content.SetContent(HtmlHelper.Hidden(Name, content)); + output.Content.SetContent(HtmlHelper.Hidden(Name, content.GetContent(HtmlEncoder))); } } } \ No newline at end of file