diff --git a/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs b/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs index 48a457e495..eeaaa58316 100644 --- a/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs +++ b/src/Microsoft.AspNetCore.Mvc.TagHelpers/InputTagHelper.cs @@ -189,20 +189,14 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers TagBuilder tagBuilder; switch (inputType) { + case "hidden": + tagBuilder = GenerateHidden(modelExplorer); + break; + case "checkbox": GenerateCheckBox(modelExplorer, output); return; - case "hidden": - tagBuilder = Generator.GenerateHidden( - ViewContext, - modelExplorer, - For.Name, - value: For.Model, - useViewData: false, - htmlAttributes: null); - break; - case "password": tagBuilder = Generator.GeneratePassword( ViewContext, @@ -364,6 +358,29 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers htmlAttributes: htmlAttributes); } + private TagBuilder GenerateHidden(ModelExplorer modelExplorer) + { + var value = For.Model; + var byteArrayValue = value as byte[]; + if (byteArrayValue != null) + { + value = Convert.ToBase64String(byteArrayValue); + } + + var htmlAttributes = new Dictionary + { + { "type", "hidden" } + }; + + return Generator.GenerateTextBox( + ViewContext, + modelExplorer, + For.Name, + value: value, + format: Format, + htmlAttributes: htmlAttributes); + } + // Get a fall-back format based on the metadata. private string GetFormat(ModelExplorer modelExplorer, string inputTypeHint, string inputType) {