【问题标题】:why textBox value from ViewBag is corrupted?为什么 ViewBag 中的 textBox 值已损坏?
【发布时间】:2014-05-01 12:10:58
【问题描述】:

我正在使用新的 asp.net MVC 5 开发一个项目。在某些时候,我从字节数组中检索一个字符串并将其传递给 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)

我在网页上看到的是:日志文件(来自@ViewBag.content)l�o�g�“f�i�l�e”(在文本框内)

为什么文本框内的字符串被破坏了? 我将不胜感激。

谢谢。

编辑:这里我将文本从 View 转换为 byte[] 并使用模型存储。

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;

【问题讨论】:

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

标签: c# asp.net asp.net-mvc razor asp.net-mvc-5


【解决方案1】:

总结一下cmets。因为您没有更改原始string 的默认格式,所以您需要使用Unicode 编码而不是UTF-8

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2014-09-17
    • 2014-12-11
    • 1970-01-01
    相关资源
    最近更新 更多