C# 为什么ViewBag中的文本框值已损坏?

C# 为什么ViewBag中的文本框值已损坏?,c#,asp.net,asp.net-mvc,razor,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Razor,Asp.net Mvc 5,我正在用asp.NETMVC5做一个项目,我是新来的。在某个时刻,我从字节数组中检索一个字符串,并将其传递给ViewBag查看 string content = System.Text.Encoding.UTF8.GetString(metadatacontent.content); ViewBag.content = content; 我想在视图中编辑此字段 @ViewBag.content // this line for checking @Html.TextBox("metaData"

我正在用asp.NETMVC5做一个项目,我是新来的。在某个时刻,我从字节数组中检索一个字符串,并将其传递给ViewBag查看

string content = System.Text.Encoding.UTF8.GetString(metadatacontent.content);
ViewBag.content = content;
我想在视图中编辑此字段

@ViewBag.content // this line for checking
@Html.TextBox("metaData", (String)ViewBag.content)
我在网页上看到的是:日志文件(from@ViewBag.content)l�o�G� �F�我�L�E� (在文本框内)

为什么文本框中的字符串会断开? 我将感谢任何帮助

谢谢

编辑:在这里,我将视图中的文本转换为字节[],并使用模型存储它

byte[] bytes = new byte[Request["metaData"].ToString().Length * sizeof(char)];
System.Buffer.BlockCopy(Request["metaData"].ToString().ToCharArray(), 0, bytes, 0, bytes.Length);
metadatacontent.content = bytes;

总结评论。因为您没有更改原始
字符串的默认格式
,所以需要使用
Unicode
编码,而不是
UTF-8

string content = System.Text.Encoding.Unicode.GetString(metadatacontent.content);

什么是metadatacontent.content?它是UTF-8格式吗?实际上,当我将字符串转换为字节[]时,我没有设置任何编码。当从byte[]转换回string时,我也用System.Text.Encoding.Default.GetString进行了尝试,但结果是一样的。您是如何将其转换成byte[]?我已经用转换成byte[]的部分编辑了这个问题。首先在创建部分,我从视图中获取文本并存储它。现在我想编辑这些数据。我也未能在视图中将字节[]转换为字符串,因此我在控制器中将其转换并与ViewBag一起传递。是否尝试使用
System.Text.Encoding.Unicode.GetString(…)