From 7bd338fc4a0a8e1e33293847a4bddf4697e55b14 Mon Sep 17 00:00:00 2001 From: Ajay Bhargav Baaskaran Date: Wed, 13 May 2015 12:19:18 -0700 Subject: [PATCH] [Fixes #266] Maintain HTML provided case for TagHelper attributes --- .../CodeBuilder/CSharp/CSharpTagHelperCodeRenderer.cs | 6 ++++-- .../TestFiles/CodeGenerator/CS/Output/ComplexTagHelpers.cs | 6 +++--- .../CodeGenerator/CS/Output/TagHelpersInSection.cs | 2 +- .../CodeGenerator/CS/Source/ComplexTagHelpers.cshtml | 4 ++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpTagHelperCodeRenderer.cs b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpTagHelperCodeRenderer.cs index 08abfc1f31..0de12eaece 100644 --- a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpTagHelperCodeRenderer.cs +++ b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/CSharpTagHelperCodeRenderer.cs @@ -200,7 +200,8 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp if (matchingAttributes.Any()) { // First attribute wins, even if there's duplicates. - var attributeValueChunk = matchingAttributes.First().Value; + var firstAttribute = matchingAttributes.First(); + var attributeValueChunk = firstAttribute.Value; var attributeValueRecorded = htmlAttributeValues.ContainsKey(attributeDescriptor.Name); @@ -293,12 +294,13 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp continue; } + var attributeName = firstAttribute.Key; // We need to inform the context of the attribute value. _writer .WriteStartInstanceMethodInvocation( ExecutionContextVariableName, _tagHelperContext.ExecutionContextAddTagHelperAttributeMethodName) - .WriteStringLiteral(attributeDescriptor.Name) + .WriteStringLiteral(attributeName) .WriteParameterSeparator() .Write(valueAccessor) .WriteEndMethodInvocation(); diff --git a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/ComplexTagHelpers.cs b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/ComplexTagHelpers.cs index d6aa418c40..430b9c41dd 100644 --- a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/ComplexTagHelpers.cs +++ b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/ComplexTagHelpers.cs @@ -1,4 +1,4 @@ -#pragma checksum "ComplexTagHelpers.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "e63f87bb14f278343a07e293df68e44e88600352" +#pragma checksum "ComplexTagHelpers.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "5832e3fc8fa5fa77f49c7bdb26fb90a1dd2d6eb0" namespace TestOutput { using Microsoft.AspNet.Razor.Runtime.TagHelpers; @@ -140,7 +140,7 @@ WriteLiteral(true ? "checkbox" : "anything"); #line hidden __tagHelperStringValueBuffer = EndTagHelperWritingScope(); __InputTagHelper.Type = __tagHelperStringValueBuffer.ToString(); - __tagHelperExecutionContext.AddTagHelperAttribute("type", __InputTagHelper.Type); + __tagHelperExecutionContext.AddTagHelperAttribute("tYPe", __InputTagHelper.Type); __InputTagHelper2 = CreateTagHelper(); __tagHelperExecutionContext.Add(__InputTagHelper2); __InputTagHelper2.Type = __InputTagHelper.Type; @@ -237,7 +237,7 @@ __InputTagHelper2.Checked = @object; #line default #line hidden - __tagHelperExecutionContext.AddTagHelperAttribute("checked", __InputTagHelper2.Checked); + __tagHelperExecutionContext.AddTagHelperAttribute("ChecKED", __InputTagHelper2.Checked); __tagHelperExecutionContext.Output = await __tagHelperRunner.RunAsync(__tagHelperExecutionContext); await WriteTagHelperAsync(__tagHelperExecutionContext); __tagHelperExecutionContext = __tagHelperScopeManager.End(); diff --git a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/TagHelpersInSection.cs b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/TagHelpersInSection.cs index f8d49606d7..9b96099d1e 100644 --- a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/TagHelpersInSection.cs +++ b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/TagHelpersInSection.cs @@ -70,7 +70,7 @@ WriteLiteral(DateTime.Now); #line hidden __tagHelperStringValueBuffer = EndTagHelperWritingScope(); __MyTagHelper.BoundProperty = __tagHelperStringValueBuffer.ToString(); - __tagHelperExecutionContext.AddTagHelperAttribute("BoundProperty", __MyTagHelper.BoundProperty); + __tagHelperExecutionContext.AddTagHelperAttribute("boundproperty", __MyTagHelper.BoundProperty); StartTagHelperWritingScope(); WriteLiteral("Current Time: "); #line 9 "TagHelpersInSection.cshtml" diff --git a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Source/ComplexTagHelpers.cshtml b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Source/ComplexTagHelpers.cshtml index 5e8c08bfeb..99ed598233 100644 --- a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Source/ComplexTagHelpers.cshtml +++ b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Source/ComplexTagHelpers.cshtml @@ -14,13 +14,13 @@ else {

Current Time:

- + }

@{ var @object = false;} - +