From 42dd4499e0ba395d1ec45ddc549402c9c199b59f Mon Sep 17 00:00:00 2001 From: Shahriar Gholami Date: Mon, 23 May 2016 22:18:20 +0430 Subject: [PATCH] Fixed a bug in TagBuilder when attribute value is null #4710 --- .../Rendering/TagBuilder.cs | 2 +- .../Rendering/TagBuilderTest.cs | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/TagBuilder.cs b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/TagBuilder.cs index 1af2ee2c6f..80eb96b782 100644 --- a/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/TagBuilder.cs +++ b/src/Microsoft.AspNetCore.Mvc.ViewFeatures/Rendering/TagBuilder.cs @@ -205,7 +205,7 @@ namespace Microsoft.AspNetCore.Mvc.Rendering writer.Write(" "); writer.Write(key); writer.Write("=\""); - encoder.Encode(writer, attribute.Value); + encoder.Encode(writer, attribute.Value ?? string.Empty); writer.Write("\""); } } diff --git a/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/TagBuilderTest.cs b/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/TagBuilderTest.cs index bba75f5904..87d0f7ff0e 100644 --- a/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/TagBuilderTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.ViewFeatures.Test/Rendering/TagBuilderTest.cs @@ -113,6 +113,26 @@ namespace Microsoft.AspNetCore.Mvc.Core.Rendering Assert.Equal(output, result); } + [Theory] + [InlineData("attribute", "value", "

")] + [InlineData("attribute", null, "

")] + [InlineData("attribute", "", "

")] + public void WriteTo_WriteEmptyAttribute_WhenValueIsNullOrEmpty(string attributeKey, string attributeValue, string expectedOutput) + { + // Arrange + var tagBuilder = new TagBuilder("p"); + + // Act + tagBuilder.Attributes.Add(attributeKey, attributeValue); + + // Assert + using (var writer = new StringWriter()) + { + tagBuilder.WriteTo(writer, new HtmlTestEncoder()); + Assert.Equal(expectedOutput, writer.ToString()); + } + } + [Fact] public void WriteTo_IncludesInnerHtml() {