簡體   English   中英

輸入的標簽助手[asp-for]與字節的數組值不兼容(與@ Html.HiddenFor相反)

[英]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" />

對照

在此處輸入圖片說明 在此處輸入圖片說明

原因(盡管我不確定100%)

當您未在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM