[英]tag helper [asp-for] for the input doesn't work with byte's array values (opposite to @Html.HiddenFor)
當@Html.HiddenFor(e=>e.RowVersion)
運行良好並生成:
<input id="RowVersion" name="RowVersion" type="hidden" value="AAAAAAAARlI=" />
但是標記幫助程序版本<input asp-for="@Model.RowVersion" name="RowVersion" hidden />
生成:
<input name="RowVersion" hidden id="RowVersion" value="System.Byte[]" />
問題是瘋狂的值“ System.Byte []”。
我想繼續使用標記幫助程序版本以保持一致性。 如何啟用字節數組序列化?
使用type="hidden"
而不是hidden
屬性!
如果您做到了,您應該能夠實現相同的目標
/*
* From the ViewModel:
* byte[] RowVersion = Encoding.UTF8.GetBytes("FR")
*/
<input asp-for="RowVersion" type="hidden" />
當您未在HTML輸入上指定type
屬性時,標記助手asp-for
將嘗試根據標記助手綁定到的屬性類型來生成HTML輸入的type
。 如果找不到適合HTML輸入的類型,則默認為type="text"
。
這就是為什么您的<input asp-for="RowVersion" hidden />
會生成一個隱藏的文本框的原因。 生成文本框時,標記助手不清除輸入值:
但是,如果您指定type="hidden"
並且您的屬性類型為byte[]
,則實際上它將為您執行Base64編碼:
這就是@Html.HiddenFor()
以及<input type="hidden" asp-for= />
起作用的原因,而其他的卻沒有起作用!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.