当@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输入上指定asp-for
属性时,标记帮助程序type
将尝试基于标记帮助程序绑定的属性类型生成HTML输入的类型。如果找不到HTML输入的正确类型,则默认为type="text"
。
这就是为什么你的<input asp-for="RowVersion" hidden />
会生成一个隐藏的文本框。生成文本框时,标记帮助程序不会清理输入值:
但是如果你指定type="hidden"
并且你的属性类型是byte[]
,它实际上会为你做Base64编码:
这就是为什么@Html.HiddenFor()
以及<input type="hidden" asp-for= />
工作,但其他人没有!