ASP.NET Core - タグヘルパーでtype="hidden"のinput要素に出力したバイト配列はBase64エンコードされる
ASP.NET Coreのタグヘルパーのお話。
次のようにtype=”hidden”のinput要素を出力するとき、asp-forでバイト配列のプロパティを指定するとBase64にエンコードされた値がvalue属性に出力されます。
@model SampleModel
<input id="id2" asp-for="Bytes" type="hidden" />
モデルはこんな感じ。
public class SampleModel {
public byte[] Bytes { get; init; }
}
Docsには記載がなさそうな感じです。
ASP.NET Core のフォームのタグ ヘルパー | Microsoft Docs
ソースを調べてみると、DefaultHtmlGenerator.GenerateHiddenメソッドでバイト配列に対して特別処理しているがそれかなと思います。(デバッグ実行で確かめたわけではないです。)
// Special-case opaque values and arbitrary binary data.
if (value is byte[] byteArrayValue)
{
value = Convert.ToBase64String(byteArrayValue);
}