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.
MarkAsHtmlEncodedMethodName = HtmlHelperPropertyName + ".Raw",
AddHtmlAttributeValuesMethodName = "AddHtmlAttributeValues",
HtmlEncoderPropertyName = "HtmlEncoder",
TagHelperContentGetContentMethodName = nameof(TagHelperContent.GetContent),
})
{
BeginContextMethodName = "BeginContext",

View File

@ -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]

View File

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