Используйте type="hidden"
вместо hidden
атрибута!
Вы сможете добиться того же, если сделаете
/*
* From the ViewModel:
* byte[] RowVersion = Encoding.UTF8.GetBytes("FR")
*/
<input asp-for="RowVersion" type="hidden" />
Сравнение
Причина (хотя я не уверен на 100%)
Помощник по тегам asp-for
попытается сгенерировать типдля ввода HTML, основанного на типе свойства, к которому привязывается помощник по тегам, если вы не указали атрибут type
во вводе HTML.Если он не может найти правильный тип для ввода HTML, он по умолчанию будет type="text"
.
Вот почему ваш <input asp-for="RowVersion" hidden />
сгенерирует скрытое текстовое поле.Помощник по тегам не очищает входное значение при создании текстового поля:
Но если вы укажете type="hidden"
и ваш тип свойства будет byte[]
,он на самом деле сделает для вас кодировку Base64:
Вот почему @Html.HiddenFor()
и <input type="hidden" asp-for= />
работали, а другие - нет!