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);
}

https://github.com/dotnet/aspnetcore/blob/ac39742bf152a0d2980059289822e1d3526a880a/src/Mvc/Mvc.ViewFeatures/src/DefaultHtmlGenerator.cs#L389-L393