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;}
-
+