From 1b28e191140ab85270160401db1333a279cd8db5 Mon Sep 17 00:00:00 2001 From: Doug Bunting Date: Mon, 17 Nov 2014 08:50:27 -0800 Subject: [PATCH] MVC tag helpers should not override tag name in Razor source - #1523 - remove `TagHelperOutput.Merge()` extension method entirely - test tag name preservation with all MVC tag helpers - `` tag helper generation of a checkbox wasn't previously tested nits: - fix argument order in a couple of `Assert.Equal()` calls - remove use of "original tag name" --- .../FormTagHelper.cs | 5 ++-- .../InputTagHelper.cs | 3 +- .../LabelTagHelper.cs | 2 -- .../SelectTagHelper.cs | 3 +- .../TagHelperOutputExtensions.cs | 17 ----------- .../TextAreaTagHelper.cs | 1 - .../AnchorTagHelperTest.cs | 5 ++-- .../FormTagHelperTest.cs | 5 ++-- .../InputTagHelperTest.cs | 6 ++-- .../LabelTagHelperTest.cs | 6 ++-- .../OptionTagHelperTest.cs | 4 +-- .../SelectTagHelperTest.cs | 24 +++++++-------- .../TagHelperOutputExtensionsTest.cs | 29 ------------------- .../TextAreaTagHelperTest.cs | 6 ++-- .../ValidationMessageTagHelperTest.cs | 7 +++-- .../ValidationSummaryTagHelperTest.cs | 7 +++-- 16 files changed, 43 insertions(+), 87 deletions(-) diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/FormTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/FormTagHelper.cs index 611b2a42cd..4d569cf620 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/FormTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/FormTagHelper.cs @@ -97,8 +97,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers if (tagBuilder != null) { - // We don't want to do a full merge because we want the TagHelper content to take precedence. - output.Merge(tagBuilder); + output.MergeAttributes(tagBuilder); + output.Content += tagBuilder.InnerHtml; + output.SelfClosing = false; } } diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/InputTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/InputTagHelper.cs index 0255cf9d1f..08dd948650 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/InputTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/InputTagHelper.cs @@ -199,8 +199,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers { // This TagBuilder contains the one element of interest. Since this is not the "checkbox" // special-case, output is a self-closing element and can merge the TagBuilder in directly. + output.MergeAttributes(tagBuilder); + output.Content += tagBuilder.InnerHtml; output.SelfClosing = true; - output.Merge(tagBuilder); } } } diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/LabelTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/LabelTagHelper.cs index 33cc3f047a..1f78745ff2 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/LabelTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/LabelTagHelper.cs @@ -48,8 +48,6 @@ namespace Microsoft.AspNet.Mvc.TagHelpers { output.Content = tagBuilder.InnerHtml; } - - output.TagName = tagBuilder.TagName; } } } diff --git a/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs b/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs index d3ecbd7034..e197713458 100644 --- a/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs +++ b/src/Microsoft.AspNet.Mvc.TagHelpers/SelectTagHelper.cs @@ -137,8 +137,9 @@ namespace Microsoft.AspNet.Mvc.TagHelpers if (tagBuilder != null) { + output.MergeAttributes(tagBuilder); + output.Content += tagBuilder.InnerHtml; output.SelfClosing = false; - output.Merge(tagBuilder); } // Whether or not (not being highly unlikely) we generate anything, could update contained