diff --git a/src/Microsoft.AspNet.Razor/Parser/TagHelpers/TagHelperParseTreeRewriter.cs b/src/Microsoft.AspNet.Razor/Parser/TagHelpers/TagHelperParseTreeRewriter.cs
index 3ebb79d415..d4962dd9e3 100644
--- a/src/Microsoft.AspNet.Razor/Parser/TagHelpers/TagHelperParseTreeRewriter.cs
+++ b/src/Microsoft.AspNet.Razor/Parser/TagHelpers/TagHelperParseTreeRewriter.cs
@@ -308,7 +308,18 @@ namespace Microsoft.AspNet.Razor.Parser.TagHelpers.Internal
{
if (_currentTagHelperTracker?.AllowedChildren != null)
{
- OnAllowedChildrenTagError(_currentTagHelperTracker, tagBlock, errorSink);
+ var tagName = GetTagName(tagBlock);
+
+ // Treat partial tags such as '' which have no tag names as content based errors.
+ if (string.IsNullOrEmpty(tagName))
+ {
+ Debug.Assert(tagBlock.Children.First() is Span);
+
+ ValidateParentTagHelperAllowsContent(tagBlock.Children.First() as Span, errorSink);
+ return;
+ }
+
+ OnAllowedChildrenTagError(_currentTagHelperTracker, tagName, tagBlock, errorSink);
}
}
@@ -319,16 +330,16 @@ namespace Microsoft.AspNet.Razor.Parser.TagHelpers.Internal
if (currentlyAllowedChildren != null &&
!currentlyAllowedChildren.Contains(tagName, StringComparer.OrdinalIgnoreCase))
{
- OnAllowedChildrenTagError(_currentTagHelperTracker, tagBlock, errorSink);
+ OnAllowedChildrenTagError(_currentTagHelperTracker, tagName, tagBlock, errorSink);
}
}
private static void OnAllowedChildrenTagError(
TagHelperBlockTracker tracker,
+ string tagName,
Block tagBlock,
ErrorSink errorSink)
{
- var tagName = GetTagName(tagBlock);
var allowedChildrenString = string.Join(", ", tracker.AllowedChildren);
var errorMessage = RazorResources.FormatTagHelperParseTreeRewriter_InvalidNestedTag(
tagName,
diff --git a/test/Microsoft.AspNet.Razor.Test/TagHelpers/TagHelperParseTreeRewriterTest.cs b/test/Microsoft.AspNet.Razor.Test/TagHelpers/TagHelperParseTreeRewriterTest.cs
index bef69e963f..59757d9bf7 100644
--- a/test/Microsoft.AspNet.Razor.Test/TagHelpers/TagHelperParseTreeRewriterTest.cs
+++ b/test/Microsoft.AspNet.Razor.Test/TagHelpers/TagHelperParseTreeRewriterTest.cs
@@ -19,11 +19,9 @@ namespace Microsoft.AspNet.Razor.Test.TagHelpers
public class TagHelperParseTreeRewriterTest : TagHelperRewritingTestBase
{
[Fact]
- public void Rewrite_UnderstandsTagHelperPrefixAndRestrictedChildren()
+ public void Rewrite_UnderstandsTagHelperPrefixAndAllowedChildren()
{
// Arrange
- var factory = CreateDefaultSpanFactory();
- var blockFactory = new BlockFactory(factory);
var documentContent = "
<
", + new[] { "custom" }, + new MarkupBlock( + new MarkupTagHelperBlock("p", + blockFactory.MarkupTagBlock("<"))), + new[] + { + nestedContentError("p", "custom", 3, 1), + } } }; }