You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core中asp-for对字节数组的编码及解码方法问询

如何解码ASP.NET生成的RowVersion HTML实体编码值

嘿,我来帮你搞定这个解码问题!

问题的根源其实很简单:ASP.NET在生成hidden输入框的内容时,会自动对Base64字符串进行HTML编码——你看到的+其实就是Base64里的+号被转义后的HTML实体。直接用Convert.FromBase64String处理带HTML实体的字符串肯定会报错,因为这些实体不属于有效的Base64字符集。

解决办法分两步走:

  1. 先还原HTML编码的Base64字符串
    用.NET自带的工具类把HTML实体转换回原始的Base64字符。你可以用System.Net.WebUtility.HtmlDecode(不需要额外引用System.Web,更适合现代.NET项目)或者System.Web.HttpUtility.HtmlDecode(针对传统ASP.NET项目)。

    示例代码:

    // 从页面获取的编码值
    var encodedRowVersion = "AAAAAAAE+uc=";
    // 解码HTML实体,得到原始Base64字符串
    var rawBase64 = System.Net.WebUtility.HtmlDecode(encodedRowVersion);
    // 此时rawBase64的值是 "AAAAAAAE+uc="
    
  2. 解码Base64字符串为RowVersion字节数组
    现在就可以正常使用Convert.FromBase64String来解码了:

    byte[] rowVersionBytes = Convert.FromBase64String(rawBase64);
    // 得到的字节数组就是你原始的0x000000000004FAE7对应的字节:[0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFA, 0xE7]
    

验证一下:把AAAAAAAE+uc=解码成字节数组,确实会得到你原始的RowVersion值,完美匹配!

内容的提问来源于stack exchange,提问作者Roman Pokrovskij

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:09:52