diff --git a/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers/UrlResolutionTagHelper.cs b/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers/UrlResolutionTagHelper.cs index 880438f107..956d5cb0fa 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers/UrlResolutionTagHelper.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers/UrlResolutionTagHelper.cs @@ -125,6 +125,11 @@ namespace Microsoft.AspNetCore.Mvc.Razor.TagHelpers throw new ArgumentNullException(nameof(output)); } + if (output.TagName == null) + { + return; + } + string[] attributeNames; if (ElementAttributeLookups.TryGetValue(output.TagName, out attributeNames)) { diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Test/TagHelpers/UrlResolutionTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Test/TagHelpers/UrlResolutionTagHelperTest.cs index 669dab0cd3..0e2e10d047 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Test/TagHelpers/UrlResolutionTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Test/TagHelpers/UrlResolutionTagHelperTest.cs @@ -36,6 +36,35 @@ namespace Microsoft.AspNetCore.Mvc.Razor.TagHelpers } } + [Fact] + public void Process_DoesNothingIfTagNameIsNull() + { + // Arrange + var tagHelperOutput = new TagHelperOutput( + tagName: null, + attributes: new TagHelperAttributeList + { + { "href", "~/home/index.html" } + }, + getChildContentAsync: (useCachedResult, encoder) => Task.FromResult(null)); + + var tagHelper = new UrlResolutionTagHelper(Mock.Of(), new HtmlTestEncoder()); + var context = new TagHelperContext( + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), + items: new Dictionary(), + uniqueId: "test"); + + // Act + tagHelper.Process(context, tagHelperOutput); + + // Assert + var attribute = Assert.Single(tagHelperOutput.Attributes); + Assert.Equal("href", attribute.Name, StringComparer.Ordinal); + var attributeValue = Assert.IsType(attribute.Value); + Assert.Equal("~/home/index.html", attributeValue, StringComparer.Ordinal); + } + [Theory] [MemberData(nameof(ResolvableUrlData))] public void Process_ResolvesTildeSlashValues(string url, string expectedHref)