diff --git a/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers/UrlResolutionTagHelper.cs b/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers/UrlResolutionTagHelper.cs index e9999ece69..ec5cf66f90 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers/UrlResolutionTagHelper.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor/TagHelpers/UrlResolutionTagHelper.cs @@ -157,51 +157,52 @@ namespace Microsoft.AspNetCore.Mvc.Razor.TagHelpers throw new ArgumentNullException(nameof(output)); } - IReadOnlyList attributes; - if (output.Attributes.TryGetAttributes(attributeName, out attributes)) + for (var i = 0; i < output.Attributes.Count; i++) { - for (var i = 0; i < attributes.Count; i++) + var attribute = output.Attributes[i]; + if (!string.Equals(attribute.Name, attributeName, StringComparison.OrdinalIgnoreCase)) { - var attribute = attributes[i]; - var stringValue = attribute.Value as string; - if (stringValue != null) + continue; + } + + var stringValue = attribute.Value as string; + if (stringValue != null) + { + string resolvedUrl; + if (TryResolveUrl(stringValue, resolvedUrl: out resolvedUrl)) { - string resolvedUrl; + output.Attributes[i] = new TagHelperAttribute(attribute.Name, resolvedUrl); + } + } + else + { + var htmlContent = attribute.Value as IHtmlContent; + if (htmlContent != null) + { + var htmlString = htmlContent as HtmlEncodedString; + if (htmlString != null) + { + // No need for a StringWriter in this case. + stringValue = htmlString.ToString(); + } + else + { + using (var writer = new StringWriter()) + { + htmlContent.WriteTo(writer, HtmlEncoder); + stringValue = writer.ToString(); + } + } + + IHtmlContent resolvedUrl; if (TryResolveUrl(stringValue, resolvedUrl: out resolvedUrl)) { - attribute.Value = resolvedUrl; + output.Attributes[i] = new TagHelperAttribute(attribute.Name, resolvedUrl); } - } - else - { - var htmlContent = attribute.Value as IHtmlContent; - if (htmlContent != null) + else if (htmlString == null) { - var htmlString = htmlContent as HtmlEncodedString; - if (htmlString != null) - { - // No need for a StringWriter in this case. - stringValue = htmlString.ToString(); - } - else - { - using (var writer = new StringWriter()) - { - htmlContent.WriteTo(writer, HtmlEncoder); - stringValue = writer.ToString(); - } - } - - IHtmlContent resolvedUrl; - if (TryResolveUrl(stringValue, resolvedUrl: out resolvedUrl)) - { - attribute.Value = resolvedUrl; - } - else if (htmlString == null) - { - // Not a ~/ URL. Just avoid re-encoding the attribute value later. - attribute.Value = new HtmlString(stringValue); - } + // Not a ~/ URL. Just avoid re-encoding the attribute value later. + output.Attributes[i] = new TagHelperAttribute(attribute.Name, new HtmlString(stringValue)); } } } diff --git a/src/Microsoft.AspNetCore.Mvc.TagHelpers/ImageTagHelper.cs b/src/Microsoft.AspNetCore.Mvc.TagHelpers/ImageTagHelper.cs index eafde361b9..498551204d 100644 --- a/src/Microsoft.AspNetCore.Mvc.TagHelpers/ImageTagHelper.cs +++ b/src/Microsoft.AspNetCore.Mvc.TagHelpers/ImageTagHelper.cs @@ -106,7 +106,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers // not function properly. Src = output.Attributes[SrcAttributeName].Value as string; - output.Attributes[SrcAttributeName] = _fileVersionProvider.AddFileVersionToPath(Src); + output.Attributes.SetAttribute(SrcAttributeName, _fileVersionProvider.AddFileVersionToPath(Src)); } } diff --git a/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs b/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs index e20e8557ed..f347977d78 100644 --- a/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs +++ b/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs @@ -183,7 +183,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers // inputType may be more specific than default the generator chooses below. if (!output.Attributes.ContainsName("type")) { - output.Attributes["type"] = inputType; + output.Attributes.SetAttribute("type", inputType); } TagBuilder tagBuilder; diff --git a/src/Microsoft.AspNetCore.Mvc.TagHelpers/Internal/AttributeMatcher.cs b/src/Microsoft.AspNetCore.Mvc.TagHelpers/Internal/AttributeMatcher.cs index cfe3496c3c..5caa08dc5b 100644 --- a/src/Microsoft.AspNetCore.Mvc.TagHelpers/Internal/AttributeMatcher.cs +++ b/src/Microsoft.AspNetCore.Mvc.TagHelpers/Internal/AttributeMatcher.cs @@ -73,7 +73,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers.Internal // Perf: Avoid allocating enumerator for (var i = 0; i < requiredAttributes.Length; i++) { - IReadOnlyTagHelperAttribute attribute; + TagHelperAttribute attribute; if (!context.AllAttributes.TryGetAttribute(requiredAttributes[i], out attribute)) { // Missing attribute. diff --git a/src/Microsoft.AspNetCore.Mvc.TagHelpers/LinkTagHelper.cs b/src/Microsoft.AspNetCore.Mvc.TagHelpers/LinkTagHelper.cs index 202d7c3571..c733fe11f8 100644 --- a/src/Microsoft.AspNetCore.Mvc.TagHelpers/LinkTagHelper.cs +++ b/src/Microsoft.AspNetCore.Mvc.TagHelpers/LinkTagHelper.cs @@ -254,7 +254,10 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers if (Href != null) { - output.Attributes[HrefAttributeName].Value = _fileVersionProvider.AddFileVersionToPath(Href); + var index = output.Attributes.IndexOfName(HrefAttributeName); + output.Attributes[index] = new TagHelperAttribute( + HrefAttributeName, + _fileVersionProvider.AddFileVersionToPath(Href)); } } @@ -303,7 +306,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers continue; } - attributes[HrefAttributeName] = url; + attributes.SetAttribute(HrefAttributeName, url); BuildLinkTag(attributes, builder); } } diff --git a/src/Microsoft.AspNetCore.Mvc.TagHelpers/ScriptTagHelper.cs b/src/Microsoft.AspNetCore.Mvc.TagHelpers/ScriptTagHelper.cs index 7a2d564e71..2935adb100 100644 --- a/src/Microsoft.AspNetCore.Mvc.TagHelpers/ScriptTagHelper.cs +++ b/src/Microsoft.AspNetCore.Mvc.TagHelpers/ScriptTagHelper.cs @@ -217,7 +217,10 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers if (Src != null) { - output.Attributes[SrcAttributeName].Value = _fileVersionProvider.AddFileVersionToPath(Src); + var index = output.Attributes.IndexOfName(SrcAttributeName); + output.Attributes[index] = new TagHelperAttribute( + SrcAttributeName, + _fileVersionProvider.AddFileVersionToPath(Src)); } } @@ -267,7 +270,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers continue; } - attributes[SrcAttributeName] = url; + attributes.SetAttribute(SrcAttributeName, url); BuildScriptTag(attributes, builder); } } diff --git a/src/Microsoft.AspNetCore.Mvc.TagHelpers/TagHelperOutputExtensions.cs b/src/Microsoft.AspNetCore.Mvc.TagHelpers/TagHelperOutputExtensions.cs index c938ba3778..dcd917675b 100644 --- a/src/Microsoft.AspNetCore.Mvc.TagHelpers/TagHelperOutputExtensions.cs +++ b/src/Microsoft.AspNetCore.Mvc.TagHelpers/TagHelperOutputExtensions.cs @@ -116,7 +116,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers if (tagHelperOutput.Attributes.TryGetAttribute("class", out classAttribute)) { - tagHelperOutput.Attributes["class"] = classAttribute.Value + " " + attribute.Value; + tagHelperOutput.Attributes.SetAttribute("class", classAttribute.Value + " " + attribute.Value); } else { @@ -158,12 +158,10 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers TagHelperContext context) { var existingAttribute = context.AllAttributes[allAttributeIndex]; - var copiedAttribute = new TagHelperAttribute - { - Name = existingAttribute.Name, - Value = existingAttribute.Value, - Minimized = existingAttribute.Minimized - }; + var copiedAttribute = new TagHelperAttribute( + existingAttribute.Name, + existingAttribute.Value, + existingAttribute.Minimized); // Move backwards through context.AllAttributes from the provided index until we find a familiar attribute // in tagHelperOutput where we can insert the copied value after the familiar one. diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Test/RazorPageTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Test/RazorPageTest.cs index b9646a956e..0ebf873016 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Test/RazorPageTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Test/RazorPageTest.cs @@ -978,7 +978,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor page.EndAddHtmlAttributeValues(executionContext); // Assert - var htmlAttribute = Assert.Single(executionContext.HTMLAttributes); + var htmlAttribute = Assert.Single(executionContext.HtmlAttributes); Assert.Equal("someattr", htmlAttribute.Name, StringComparer.Ordinal); var htmlContent = Assert.IsAssignableFrom(htmlAttribute.Value); Assert.Equal(expectedValue, HtmlContentUtilities.HtmlContentToString(htmlContent), StringComparer.Ordinal); @@ -1016,7 +1016,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor page.EndAddHtmlAttributeValues(executionContext); // Assert - Assert.Empty(executionContext.HTMLAttributes); + Assert.Empty(executionContext.HtmlAttributes); var attribute = Assert.Single(executionContext.AllAttributes); Assert.Equal("someattr", attribute.Name, StringComparer.Ordinal); Assert.Equal(expectedValue, (string)attribute.Value, StringComparer.Ordinal); @@ -1044,7 +1044,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor page.EndAddHtmlAttributeValues(executionContext); // Assert - var htmlAttribute = Assert.Single(executionContext.HTMLAttributes); + var htmlAttribute = Assert.Single(executionContext.HtmlAttributes); Assert.Equal("someattr", htmlAttribute.Name, StringComparer.Ordinal); Assert.Equal("someattr", (string)htmlAttribute.Value, StringComparer.Ordinal); Assert.False(htmlAttribute.Minimized); diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.Test/TagHelpers/UrlResolutionTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.Test/TagHelpers/UrlResolutionTagHelperTest.cs index f7186f7b33..669dab0cd3 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.Test/TagHelpers/UrlResolutionTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.Test/TagHelpers/UrlResolutionTagHelperTest.cs @@ -59,8 +59,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.TagHelpers var tagHelper = new UrlResolutionTagHelper(urlHelperFactory.Object, new HtmlTestEncoder()); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -115,8 +115,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.TagHelpers var tagHelper = new UrlResolutionTagHelper(urlHelperFactory.Object, new HtmlTestEncoder()); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -170,8 +170,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.TagHelpers var tagHelper = new UrlResolutionTagHelper(urlHelperFactory.Object, new HtmlTestEncoder()); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -225,8 +225,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.TagHelpers var tagHelper = new UrlResolutionTagHelper(urlHelperFactory.Object, new HtmlTestEncoder()); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -255,8 +255,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.TagHelpers var tagHelper = new UrlResolutionTagHelper(urlHelperFactory: null, htmlEncoder: null); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -300,8 +300,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.TagHelpers var tagHelper = new UrlResolutionTagHelper(urlHelperFactory.Object, new HtmlTestEncoder()); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/AnchorTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/AnchorTagHelperTest.cs index e9f2912a92..18ae391e8f 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/AnchorTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/AnchorTagHelperTest.cs @@ -92,8 +92,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { // Arrange var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var output = new TagHelperOutput( @@ -141,8 +141,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { // Arrange var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var output = new TagHelperOutput( @@ -225,8 +225,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers "'asp-fragment' attribute."; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -260,8 +260,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers "'asp-route' must not have an 'asp-action' or 'asp-controller' attribute."; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/FormTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/FormTagHelperTest.cs index 747f4fd751..2a3c1503e3 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/FormTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/FormTagHelperTest.cs @@ -114,8 +114,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var viewContext = CreateViewContext(); var expectedAttribute = new TagHelperAttribute("method", method.ToString().ToLowerInvariant()); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - new ReadOnlyTagHelperAttributeList(new List { expectedAttribute })), + allAttributes: new TagHelperAttributeList(new[] { expectedAttribute }), items: new Dictionary(), uniqueId: "test"); var output = new TagHelperOutput( @@ -167,8 +166,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers // Arrange var testViewContext = CreateViewContext(); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var expectedAttribute = new TagHelperAttribute("asp-ROUTEE-NotRoute", "something"); @@ -239,8 +238,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers // Arrange var viewContext = CreateViewContext(); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var output = new TagHelperOutput( @@ -290,8 +289,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers // Arrange var viewContext = CreateViewContext(); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var output = new TagHelperOutput( @@ -371,8 +370,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers return Task.FromResult(tagHelperContent); }); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -419,8 +418,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers "'asp-action' or 'asp-controller' or 'asp-route' attribute."; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -450,8 +449,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers "'asp-route' must not have an 'asp-action' or 'asp-controller' attribute."; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/InputTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/InputTagHelperTest.cs index f3d35e67e7..58228da9e9 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/InputTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/InputTagHelperTest.cs @@ -87,8 +87,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers ""; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var output = new TagHelperOutput( @@ -193,8 +193,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var expectedTagName = "not-input"; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var originalAttributes = new TagHelperAttributeList @@ -257,8 +257,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var expectedPostContent = "original post-content"; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var originalAttributes = new TagHelperAttributeList @@ -343,7 +343,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers }; if (!string.IsNullOrEmpty(inputTypeName)) { - contextAttributes["type"] = inputTypeName; // Support restoration of type attribute, if any. + contextAttributes.SetAttribute("type", inputTypeName); // Support restoration of type attribute, if any. } var expectedAttributes = new TagHelperAttributeList @@ -444,7 +444,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers }; if (!string.IsNullOrEmpty(inputTypeName)) { - contextAttributes["type"] = inputTypeName; // Support restoration of type attribute, if any. + contextAttributes.SetAttribute("type", inputTypeName); // Support restoration of type attribute, if any. } var expectedAttributes = new TagHelperAttributeList @@ -541,7 +541,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers }; if (!string.IsNullOrEmpty(inputTypeName)) { - contextAttributes["type"] = inputTypeName; // Support restoration of type attribute, if any. + contextAttributes.SetAttribute("type", inputTypeName); // Support restoration of type attribute, if any. } var expectedAttributes = new TagHelperAttributeList @@ -651,7 +651,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers }; if (!string.IsNullOrEmpty(inputTypeName)) { - contextAttributes["type"] = inputTypeName; // Support restoration of type attribute, if any. + contextAttributes.SetAttribute("type", inputTypeName); // Support restoration of type attribute, if any. } var expectedAttributes = new TagHelperAttributeList @@ -784,8 +784,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var expectedTagName = "not-input"; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -868,8 +868,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var expectedTagName = "not-input"; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/Internal/AttributeMatcherTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/Internal/AttributeMatcherTest.cs index 2293b9f48a..870fcc2620 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/Internal/AttributeMatcherTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/Internal/AttributeMatcherTest.cs @@ -24,8 +24,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers.Internal }; var attributes = new TagHelperAttributeList { - ["first-attr"] = "value", - ["not-in-any-mode"] = "value" + new TagHelperAttribute("first-attr", "value"), + new TagHelperAttribute("not-in-any-mode", "value") }; var context = MakeTagHelperContext(attributes); @@ -49,9 +49,9 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers.Internal }; var attributes = new TagHelperAttributeList { - ["first-attr"] = "value", - ["second-attr"] = "value", - ["not-in-any-mode"] = "value" + new TagHelperAttribute("first-attr", "value"), + new TagHelperAttribute("second-attr", "value"), + new TagHelperAttribute("not-in-any-mode", "value") }; var context = MakeTagHelperContext(attributes); @@ -77,10 +77,10 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers.Internal }; var attributes = new TagHelperAttributeList { - ["first-attr"] = "value", - ["second-attr"] = "value", - ["third-attr"] = "value", - ["not-in-any-mode"] = "value" + new TagHelperAttribute("first-attr", "value"), + new TagHelperAttribute("second-attr", "value"), + new TagHelperAttribute("third-attr", "value"), + new TagHelperAttribute("not-in-any-mode", "value") }; var context = MakeTagHelperContext(attributes); diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/LabelTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/LabelTagHelperTest.cs index 8216785fd3..b8f8c9b680 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/LabelTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/LabelTagHelperTest.cs @@ -190,8 +190,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var expectedPostContent = "original post-content"; var tagHelperContext = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList(), items: new Dictionary(), uniqueId: "test"); var htmlAttributes = new TagHelperAttributeList diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/LinkTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/LinkTagHelperTest.cs index 372004fb3e..5d55379a80 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/LinkTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/LinkTagHelperTest.cs @@ -200,10 +200,10 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-href"] = "test.css", - ["asp-fallback-test-class"] = "hidden", - ["asp-fallback-test-property"] = "visibility", - ["asp-fallback-test-value"] = "hidden" + new TagHelperAttribute("asp-fallback-href", "test.css"), + new TagHelperAttribute("asp-fallback-test-class", "hidden"), + new TagHelperAttribute("asp-fallback-test-property", "visibility"), + new TagHelperAttribute("asp-fallback-test-value", "hidden") }, tagHelper => { @@ -216,10 +216,10 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-href-include"] = "*.css", - ["asp-fallback-test-class"] = "hidden", - ["asp-fallback-test-property"] = "visibility", - ["asp-fallback-test-value"] = "hidden" + new TagHelperAttribute("asp-fallback-href-include", "*.css"), + new TagHelperAttribute("asp-fallback-test-class", "hidden"), + new TagHelperAttribute("asp-fallback-test-property", "visibility"), + new TagHelperAttribute("asp-fallback-test-value", "hidden") }, tagHelper => { @@ -233,11 +233,11 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-href"] = "test.css", - ["asp-fallback-test-class"] = "hidden", - ["asp-fallback-test-property"] = "visibility", - ["asp-fallback-test-value"] = "hidden", - ["asp-append-version"] = "true" + new TagHelperAttribute("asp-fallback-href", "test.css"), + new TagHelperAttribute("asp-fallback-test-class", "hidden"), + new TagHelperAttribute("asp-fallback-test-property", "visibility"), + new TagHelperAttribute("asp-fallback-test-value", "hidden"), + new TagHelperAttribute("asp-append-version", "true") }, tagHelper => { @@ -251,11 +251,11 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-href-include"] = "*.css", - ["asp-fallback-test-class"] = "hidden", - ["asp-fallback-test-property"] = "visibility", - ["asp-fallback-test-value"] = "hidden", - ["asp-append-version"] = "true" + new TagHelperAttribute("asp-fallback-href-include", "*.css"), + new TagHelperAttribute("asp-fallback-test-class", "hidden"), + new TagHelperAttribute("asp-fallback-test-property", "visibility"), + new TagHelperAttribute("asp-fallback-test-value", "hidden"), + new TagHelperAttribute("asp-append-version", "true") }, tagHelper => { @@ -318,7 +318,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-href-include"] = "*.css" + new TagHelperAttribute("asp-href-include", "*.css") }, tagHelper => { @@ -328,8 +328,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-href-include"] = "*.css", - ["asp-href-exclude"] = "*.min.css" + new TagHelperAttribute("asp-href-include", "*.css"), + new TagHelperAttribute("asp-href-exclude", "*.min.css") }, tagHelper => { @@ -340,8 +340,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-href-include"] = "*.css", - ["asp-append-version"] = "true" + new TagHelperAttribute("asp-href-include", "*.css"), + new TagHelperAttribute("asp-append-version", "true") }, tagHelper => { @@ -352,9 +352,9 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-href-include"] = "*.css", - ["asp-href-exclude"] = "*.min.css", - ["asp-append-version"] = "true" + new TagHelperAttribute("asp-href-include", "*.css"), + new TagHelperAttribute("asp-href-exclude", "*.min.css"), + new TagHelperAttribute("asp-append-version", "true") }, tagHelper => { @@ -463,8 +463,9 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - // This is commented out on purpose: ["asp-href-include"] = "*.css", - ["asp-href-exclude"] = "*.min.css" + // This is commented out on purpose: new TagHelperAttribute("asp-href-include", "*.css"), + // Note asp-href-include attribute isn't included. + new TagHelperAttribute("asp-href-exclude", "*.min.css") }, tagHelper => { @@ -475,10 +476,11 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - // This is commented out on purpose: ["asp-fallback-href"] = "test.css", - ["asp-fallback-test-class"] = "hidden", - ["asp-fallback-test-property"] = "visibility", - ["asp-fallback-test-value"] = "hidden" + // This is commented out on purpose: new TagHelperAttribute("asp-fallback-href", "test.css"), + // Note asp-href-include attribute isn't included. + new TagHelperAttribute("asp-fallback-test-class", "hidden"), + new TagHelperAttribute("asp-fallback-test-property", "visibility"), + new TagHelperAttribute("asp-fallback-test-value", "hidden") }, tagHelper => { @@ -491,10 +493,11 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-href"] = "test.css", - ["asp-fallback-test-class"] = "hidden", - // This is commented out on purpose: ["asp-fallback-test-property"] = "visibility", - ["asp-fallback-test-value"] = "hidden" + new TagHelperAttribute("asp-fallback-href", "test.css"), + new TagHelperAttribute("asp-fallback-test-class", "hidden"), + // This is commented out on purpose: new TagHelperAttribute("asp-fallback-test-property", "visibility"), + // Note asp-href-include attribute isn't included. + new TagHelperAttribute("asp-fallback-test-value", "hidden") }, tagHelper => { @@ -507,11 +510,11 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - // This is commented out on purpose: ["asp-fallback-href-include"] = "test.css", - ["asp-fallback-href-exclude"] = "**/*.min.css", - ["asp-fallback-test-class"] = "hidden", - ["asp-fallback-test-property"] = "visibility", - ["asp-fallback-test-value"] = "hidden" + // This is commented out on purpose: new TagHelperAttribute("asp-fallback-href-include", "test.css"), + new TagHelperAttribute("asp-fallback-href-exclude", "**/*.min.css"), + new TagHelperAttribute("asp-fallback-test-class", "hidden"), + new TagHelperAttribute("asp-fallback-test-property", "visibility"), + new TagHelperAttribute("asp-fallback-test-value", "hidden") }, tagHelper => { @@ -641,13 +644,13 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var context = MakeTagHelperContext( attributes: new TagHelperAttributeList { - ["rel"] = "stylesheet", - ["href"] = "/css/site.css", - ["asp-href-include"] = "**/*.css" + new TagHelperAttribute("rel", "stylesheet"), + new TagHelperAttribute("href", "/css/site.css"), + new TagHelperAttribute("asp-href-include", "**/*.css") }); var output = MakeTagHelperOutput("link", attributes: new TagHelperAttributeList { - ["rel"] = "stylesheet", + new TagHelperAttribute("rel", "stylesheet"), }); var hostingEnvironment = MakeHostingEnvironment(); var viewContext = MakeViewContext(); diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/RenderAtEndOfFormTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/RenderAtEndOfFormTagHelperTest.cs index 8abe6c1a8d..17093ac74c 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/RenderAtEndOfFormTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/RenderAtEndOfFormTagHelperTest.cs @@ -63,7 +63,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers }); var tagHelperContext = new TagHelperContext( - Enumerable.Empty(), + Enumerable.Empty(), new Dictionary(), "someId"); diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ScriptTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ScriptTagHelperTest.cs index ebcc42c29d..95286d9a76 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ScriptTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ScriptTagHelperTest.cs @@ -102,10 +102,10 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers outputAttributes.Concat( new TagHelperAttributeList { - ["data-extra"] = "something", - ["src"] = "/blank.js", - ["asp-fallback-src"] = "http://www.example.com/blank.js", - ["asp-fallback-test"] = "isavailable()", + new TagHelperAttribute("data-extra", "something"), + new TagHelperAttribute("src", "/blank.js"), + new TagHelperAttribute("asp-fallback-src", "http://www.example.com/blank.js"), + new TagHelperAttribute("asp-fallback-test", "isavailable()"), })); var tagHelperContext = MakeTagHelperContext(allAttributes); var viewContext = MakeViewContext(); @@ -149,8 +149,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-src"] = "test.js", - ["asp-fallback-test"] = "isavailable()" + new TagHelperAttribute("asp-fallback-src", "test.js"), + new TagHelperAttribute("asp-fallback-test", "isavailable()") }, tagHelper => { @@ -161,8 +161,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-src-include"] = "*.js", - ["asp-fallback-test"] = "isavailable()" + new TagHelperAttribute("asp-fallback-src-include", "*.js"), + new TagHelperAttribute("asp-fallback-test", "isavailable()") }, tagHelper => { @@ -173,9 +173,9 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-src"] = "test.js", - ["asp-fallback-src-include"] = "*.js", - ["asp-fallback-test"] = "isavailable()" + new TagHelperAttribute("asp-fallback-src", "test.js"), + new TagHelperAttribute("asp-fallback-src-include", "*.js"), + new TagHelperAttribute("asp-fallback-test", "isavailable()") }, tagHelper => { @@ -187,9 +187,9 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-src-include"] = "*.js", - ["asp-fallback-src-exclude"] = "*.min.js", - ["asp-fallback-test"] = "isavailable()" + new TagHelperAttribute("asp-fallback-src-include", "*.js"), + new TagHelperAttribute("asp-fallback-src-exclude", "*.min.js"), + new TagHelperAttribute("asp-fallback-test", "isavailable()") }, tagHelper => { @@ -202,9 +202,9 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-src"] = "test.js", - ["asp-fallback-test"] = "isavailable()", - ["asp-append-version"] = "true" + new TagHelperAttribute("asp-fallback-src", "test.js"), + new TagHelperAttribute("asp-fallback-test", "isavailable()"), + new TagHelperAttribute("asp-append-version", "true") }, tagHelper => { @@ -216,9 +216,9 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-src-include"] = "*.js", - ["asp-fallback-test"] = "isavailable()", - ["asp-append-version"] = "true" + new TagHelperAttribute("asp-fallback-src-include", "*.js"), + new TagHelperAttribute("asp-fallback-test", "isavailable()"), + new TagHelperAttribute("asp-append-version", "true") }, tagHelper => { @@ -230,10 +230,10 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-src"] = "test.js", - ["asp-fallback-src-include"] = "*.js", - ["asp-fallback-test"] = "isavailable()", - ["asp-append-version"] = "true" + new TagHelperAttribute("asp-fallback-src", "test.js"), + new TagHelperAttribute("asp-fallback-src-include", "*.js"), + new TagHelperAttribute("asp-fallback-test", "isavailable()"), + new TagHelperAttribute("asp-append-version", "true") }, tagHelper => { @@ -246,10 +246,10 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-src-include"] = "*.js", - ["asp-fallback-src-exclude"] = "*.min.js", - ["asp-fallback-test"] = "isavailable()", - ["asp-append-version"] = "true" + new TagHelperAttribute("asp-fallback-src-include", "*.js"), + new TagHelperAttribute("asp-fallback-src-exclude", "*.min.js"), + new TagHelperAttribute("asp-fallback-test", "isavailable()"), + new TagHelperAttribute("asp-append-version", "true") }, tagHelper => { @@ -311,7 +311,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-src-include"] = "*.js" + new TagHelperAttribute("asp-src-include", "*.js") }, tagHelper => { @@ -321,8 +321,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-src-include"] = "*.js", - ["asp-src-exclude"] = "*.min.js" + new TagHelperAttribute("asp-src-include", "*.js"), + new TagHelperAttribute("asp-src-exclude", "*.min.js") }, tagHelper => { @@ -333,8 +333,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-src-include"] = "*.js", - ["asp-append-version"] = "true" + new TagHelperAttribute("asp-src-include", "*.js"), + new TagHelperAttribute("asp-append-version", "true") }, tagHelper => { @@ -345,9 +345,9 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-src-include"] = "*.js", - ["asp-src-exclude"] = "*.min.js", - ["asp-append-version"] = "true" + new TagHelperAttribute("asp-src-include", "*.js"), + new TagHelperAttribute("asp-src-exclude", "*.min.js"), + new TagHelperAttribute("asp-append-version", "true") }, tagHelper => { @@ -408,8 +408,9 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - // This is commented out on purpose: ["asp-src-include"] = "*.js", - ["asp-src-exclude"] = "*.min.js" + // This is commented out on purpose: new TagHelperAttribute("asp-src-include", "*.js"), + // Note asp-src-include attribute isn't included. + new TagHelperAttribute("asp-src-exclude", "*.min.js") }, tagHelper => { @@ -420,8 +421,9 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - // This is commented out on purpose: ["asp-fallback-src"] = "test.js", - ["asp-fallback-test"] = "isavailable()", + // This is commented out on purpose: new TagHelperAttribute("asp-fallback-src", "test.js"), + // Note asp-src-include attribute isn't included. + new TagHelperAttribute("asp-fallback-test", "isavailable()"), }, tagHelper => { @@ -432,8 +434,9 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - ["asp-fallback-src"] = "test.js", - // This is commented out on purpose: ["asp-fallback-test"] = "isavailable()" + new TagHelperAttribute("asp-fallback-src", "test.js"), + // This is commented out on purpose: new TagHelperAttribute("asp-fallback-test", "isavailable()") + // Note asp-src-include attribute isn't included. }, tagHelper => { @@ -444,9 +447,10 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { new TagHelperAttributeList { - // This is commented out on purpose: ["asp-fallback-src-include"] = "test.js", - ["asp-fallback-src-exclude"] = "**/*.min.js", - ["asp-fallback-test"] = "isavailable()", + // This is commented out on purpose: new TagHelperAttribute("asp-fallback-src-include", "test.js"), + // Note asp-src-include attribute isn't included. + new TagHelperAttribute("asp-fallback-src-exclude", "**/*.min.js"), + new TagHelperAttribute("asp-fallback-test", "isavailable()"), }, tagHelper => { @@ -528,11 +532,11 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var tagHelperContext = MakeTagHelperContext( attributes: new TagHelperAttributeList { - ["data-extra"] = "something", - ["src"] = "/blank.js", - ["data-more"] = "else", - ["asp-fallback-src"] = "http://www.example.com/blank.js", - ["asp-fallback-test"] = "isavailable()", + new TagHelperAttribute("data-extra", "something"), + new TagHelperAttribute("src", "/blank.js"), + new TagHelperAttribute("data-more", "else"), + new TagHelperAttribute("asp-fallback-src", "http://www.example.com/blank.js"), + new TagHelperAttribute("asp-fallback-test", "isavailable()"), }); var viewContext = MakeViewContext(); @@ -540,8 +544,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var output = MakeTagHelperOutput("src", attributes: new TagHelperAttributeList { - ["data-extra"] = "something", - ["data-more"] = "else", + new TagHelperAttribute("data-extra", "something"), + new TagHelperAttribute("data-more", "else"), }); var hostingEnvironment = MakeHostingEnvironment(); @@ -575,8 +579,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var context = MakeTagHelperContext( attributes: new TagHelperAttributeList { - ["src"] = "/js/site.js", - ["asp-src-include"] = "**/*.js" + new TagHelperAttribute("src", "/js/site.js"), + new TagHelperAttribute("asp-src-include", "**/*.js") }); var output = MakeTagHelperOutput("script", attributes: new TagHelperAttributeList()); var hostingEnvironment = MakeHostingEnvironment(); @@ -617,8 +621,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var context = MakeTagHelperContext( attributes: new TagHelperAttributeList { - ["src"] = "/js/site.js", - ["asp-src-include"] = "**/*.js" + new TagHelperAttribute("src", "/js/site.js"), + new TagHelperAttribute("asp-src-include", "**/*.js") }); var output = MakeTagHelperOutput("script", attributes: new TagHelperAttributeList()); var hostingEnvironment = MakeHostingEnvironment(); @@ -659,8 +663,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var context = MakeTagHelperContext( attributes: new TagHelperAttributeList { - ["src"] = "/js/site.js", - ["asp-append-version"] = "true" + new TagHelperAttribute("src", "/js/site.js"), + new TagHelperAttribute("asp-append-version", "true") }); var output = MakeTagHelperOutput("script", attributes: new TagHelperAttributeList()); @@ -694,8 +698,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var context = MakeTagHelperContext( attributes: new TagHelperAttributeList { - ["src"] = "/bar/js/site.js", - ["asp-append-version"] = "true" + new TagHelperAttribute("src", "/bar/js/site.js"), + new TagHelperAttribute("asp-append-version", "true") }); var output = MakeTagHelperOutput("script", attributes: new TagHelperAttributeList()); var hostingEnvironment = MakeHostingEnvironment(); @@ -728,10 +732,10 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var context = MakeTagHelperContext( attributes: new TagHelperAttributeList { - ["src"] = "/js/site.js", - ["asp-fallback-src-include"] = "fallback.js", - ["asp-fallback-test"] = "isavailable()", - ["asp-append-version"] = "true" + new TagHelperAttribute("src", "/js/site.js"), + new TagHelperAttribute("asp-fallback-src-include", "fallback.js"), + new TagHelperAttribute("asp-fallback-test", "isavailable()"), + new TagHelperAttribute("asp-append-version", "true") }); var output = MakeTagHelperOutput("script", attributes: new TagHelperAttributeList()); var hostingEnvironment = MakeHostingEnvironment(); @@ -769,9 +773,9 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var context = MakeTagHelperContext( attributes: new TagHelperAttributeList { - ["src"] = "/js/site.js", - ["asp-src-include"] = "*.js", - ["asp-append-version"] = "true" + new TagHelperAttribute("src", "/js/site.js"), + new TagHelperAttribute("asp-src-include", "*.js"), + new TagHelperAttribute("asp-append-version", "true") }); var output = MakeTagHelperOutput("script", attributes: new TagHelperAttributeList()); var hostingEnvironment = MakeHostingEnvironment(); diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/SelectTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/SelectTagHelperTest.cs index 7652bbc23d..ca79168126 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/SelectTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/SelectTagHelperTest.cs @@ -201,8 +201,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var modelExpression = new ModelExpression(nameAndId.Name, modelExplorer); var tagHelperContext = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var output = new TagHelperOutput( @@ -290,8 +290,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var modelExpression = new ModelExpression(nameAndId.Name, modelExplorer); var tagHelperContext = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var output = new TagHelperOutput( @@ -394,8 +394,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var modelExpression = new ModelExpression(name: string.Empty, modelExplorer: modelExplorer); var tagHelperContext = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var output = new TagHelperOutput( @@ -557,8 +557,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers bool allowMultiple) { // Arrange - var contextAttributes = new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()); + var contextAttributes = new TagHelperAttributeList( + Enumerable.Empty()); var originalAttributes = new TagHelperAttributeList(); var propertyName = "Property1"; var tagName = "select"; diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/TagHelperOutputExtensionsTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/TagHelperOutputExtensionsTest.cs index 1b903005db..0784d3f29c 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/TagHelperOutputExtensionsTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/TagHelperOutputExtensionsTest.cs @@ -960,7 +960,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers Assert.Equal(expectedBuilderAttribute.Value, attribute.Value); } - private class CaseSensitiveTagHelperAttributeComparer : IEqualityComparer + private class CaseSensitiveTagHelperAttributeComparer : IEqualityComparer { public readonly static CaseSensitiveTagHelperAttributeComparer Default = new CaseSensitiveTagHelperAttributeComparer(); @@ -969,7 +969,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers { } - public bool Equals(IReadOnlyTagHelperAttribute attributeX, IReadOnlyTagHelperAttribute attributeY) + public bool Equals(TagHelperAttribute attributeX, TagHelperAttribute attributeY) { if (attributeX == attributeY) { @@ -983,7 +983,7 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers (attributeX.Minimized || Equals(attributeX.Value, attributeY.Value)); } - public int GetHashCode(IReadOnlyTagHelperAttribute attribute) + public int GetHashCode(TagHelperAttribute attribute) { return attribute.GetHashCode(); } diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/TextAreaTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/TextAreaTagHelperTest.cs index 24d1375a0b..3174573145 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/TextAreaTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/TextAreaTagHelperTest.cs @@ -124,8 +124,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers }; var tagHelperContext = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var htmlAttributes = new TagHelperAttributeList diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ValidationMessageTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ValidationMessageTagHelperTest.cs index d4e6fcfe93..d032ac1b35 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ValidationMessageTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ValidationMessageTagHelperTest.cs @@ -114,8 +114,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var expectedContent = "original content"; var expectedPostContent = "original post-content"; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var output = new TagHelperOutput( @@ -184,8 +184,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers output.Content.AppendHtml(outputContent); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -243,8 +243,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers }); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -283,8 +283,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers output.PostContent.SetContent(expectedPostContent); var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ValidationSummaryTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ValidationSummaryTagHelperTest.cs index 760e2c6fac..1432219455 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ValidationSummaryTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/ValidationSummaryTagHelperTest.cs @@ -39,8 +39,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers var expectedPreContent = "original pre-content"; var expectedContent = "original content"; var tagHelperContext = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); var output = new TagHelperOutput( @@ -120,8 +120,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers validationSummaryTagHelper.ViewContext = expectedViewContext; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -176,8 +176,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers validationSummaryTagHelper.ViewContext = viewContext; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -225,8 +225,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers validationSummaryTagHelper.ViewContext = viewContext; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); @@ -281,8 +281,8 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers validationSummaryTagHelper.ViewContext = viewContext; var context = new TagHelperContext( - allAttributes: new ReadOnlyTagHelperAttributeList( - Enumerable.Empty()), + allAttributes: new TagHelperAttributeList( + Enumerable.Empty()), items: new Dictionary(), uniqueId: "test"); diff --git a/test/WebSites/TagHelpersWebSite/TagHelpers/ATagHelper.cs b/test/WebSites/TagHelpersWebSite/TagHelpers/ATagHelper.cs index 7129d812bd..2326ee9ca6 100644 --- a/test/WebSites/TagHelpersWebSite/TagHelpers/ATagHelper.cs +++ b/test/WebSites/TagHelpersWebSite/TagHelpers/ATagHelper.cs @@ -40,7 +40,7 @@ namespace TagHelpersWebSite.TagHelpers output.Attributes.Clear(); var urlHelper = UrlHelperFactory.GetUrlHelper(ViewContext); - output.Attributes["href"] = urlHelper.Action(Action, Controller, methodParameters); + output.Attributes.SetAttribute("href", urlHelper.Action(Action, Controller, methodParameters)); output.PreContent.SetContent("My "); } diff --git a/test/WebSites/TagHelpersWebSite/TagHelpers/AddProcessedAttributeTagHelper.cs b/test/WebSites/TagHelpersWebSite/TagHelpers/AddProcessedAttributeTagHelper.cs index 8db1ba7424..88e62e0305 100644 --- a/test/WebSites/TagHelpersWebSite/TagHelpers/AddProcessedAttributeTagHelper.cs +++ b/test/WebSites/TagHelpersWebSite/TagHelpers/AddProcessedAttributeTagHelper.cs @@ -10,7 +10,7 @@ namespace TagHelpersWebSite.TagHelpers { public override void Process(TagHelperContext context, TagHelperOutput output) { - output.Attributes.Add(new TagHelperAttribute { Name = "processed", Minimized = true }); + output.Attributes.Add(new TagHelperAttribute("processed")); } } } diff --git a/test/WebSites/TagHelpersWebSite/TagHelpers/PrettyTagHelper.cs b/test/WebSites/TagHelpersWebSite/TagHelpers/PrettyTagHelper.cs index cd8ee00942..267e410199 100644 --- a/test/WebSites/TagHelpersWebSite/TagHelpers/PrettyTagHelper.cs +++ b/test/WebSites/TagHelpersWebSite/TagHelpers/PrettyTagHelper.cs @@ -53,7 +53,7 @@ namespace TagHelpersWebSite.TagHelpers style += ";"; } - output.Attributes["style"] = style + prettyStyle; + output.Attributes.SetAttribute("style", style + prettyStyle); } } }