From 230a13d0e13e4c7e192bc6623762bfd4cde726ef Mon Sep 17 00:00:00 2001 From: jacalvar Date: Fri, 20 May 2016 01:46:03 -0700 Subject: [PATCH] [Fixes #4633] Datetime? and DateTimeOffset? values on InputTagHelper are not rendered correctly. --- .../InputTagHelper.cs | 2 +- .../InputTagHelperTest.cs | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs b/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs index f347977d78..d386020418 100644 --- a/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs +++ b/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs @@ -356,7 +356,7 @@ private string GetFormat(ModelExplorer modelExplorer, string inputTypeHint, stri else if (_rfc3339Formats.TryGetValue(inputType, out rfc3339Format) && ViewContext.Html5DateRenderingMode == Html5DateRenderingMode.Rfc3339 && !modelExplorer.Metadata.HasNonDefaultEditFormat && - (typeof(DateTime) == modelExplorer.ModelType || typeof(DateTimeOffset) == modelExplorer.ModelType)) + (typeof(DateTime) == modelExplorer.Metadata.UnderlyingOrModelType || typeof(DateTimeOffset) == modelExplorer.Metadata.UnderlyingOrModelType)) { // Rfc3339 mode _may_ override EditFormatString in a limited number of cases e.g. EditFormatString // must be a default format (i.e. came from a built-in [DataType] attribute). diff --git a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/InputTagHelperTest.cs b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/InputTagHelperTest.cs index 58228da9e9..cabe292766 100644 --- a/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/InputTagHelperTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.TagHelpers.Test/InputTagHelperTest.cs @@ -854,6 +854,9 @@ public async Task ProcessAsync_CallsGenerateCheckBox_WithExpectedParameters() [InlineData("DateTimeLocal", Html5DateRenderingMode.Rfc3339, "{0:yyyy-MM-ddTHH:mm:ss.fff}", "datetime-local")] [InlineData("Time", Html5DateRenderingMode.CurrentCulture, "{0:t}", "time")] // Format from [DataType]. [InlineData("Time", Html5DateRenderingMode.Rfc3339, "{0:HH:mm:ss.fff}", "time")] + [InlineData("NullableDate", Html5DateRenderingMode.Rfc3339, "{0:yyyy-MM-dd}", "date")] + [InlineData("NullableDateTime", Html5DateRenderingMode.Rfc3339, "{0:yyyy-MM-ddTHH:mm:ss.fffK}", "datetime")] + [InlineData("NullableDateTimeOffset", Html5DateRenderingMode.Rfc3339, "{0:yyyy-MM-ddTHH:mm:ss.fffK}", "datetime")] public async Task ProcessAsync_CallsGenerateTextBox_AddsExpectedAttributesForRfc3339( string propertyName, Html5DateRenderingMode dateRenderingMode, @@ -996,6 +999,13 @@ private class Model public DateTimeOffset DateTimeOffset { get; set; } + [DataType(DataType.Date)] + public DateTime? NullableDate { get; set; } + + public DateTime? NullableDateTime { get; set; } + + public DateTimeOffset? NullableDateTimeOffset { get; set; } + [DataType("datetime-local")] public DateTime DateTimeLocal { get; set; }