BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream m = new MemoryStream())
{
formatter.Serialize(m, list);
StreamReader sr = new StreamReader(m);
HiddenField1.Value = sr.ReadToEnd();
}
我为HiddenField1.Value获取了一个空白值。不确定我在做什么甚至是可能的?列表肯定是填充(is a List<T>)
答案 0 :(得分:7)
取决于您想要实现的目标...一个选项是将二进制流的内容显示为Base64字符串:
var memoryStream = new MemoryStream();
using(memoryStream)
{
formatter.Serialize(memoryStream, list);
}
HiddenField1.Value = Convert.ToBase64String(memoryStream.ToArray());
答案 1 :(得分:3)
将其更改为:
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream m = new MemoryStream())
{
formatter.Serialize(m, list);
m.Position = 0;
StreamReader sr = new StreamReader(m);
HiddenField1.Value = sr.ReadToEnd();
}
在阅读之前,您需要将流的位置重置回到开头。此外,您不应该使用StreamReader将像这样的二进制流转换为文本,因为它会以意想不到的方式中断。如果您希望结果采用类似文本的格式,请使用{@ 1}},如@ Alexei的答案。