如何在隐藏字段中存储和接收字节数组?

时间:2013-03-27 08:38:51

标签: c#

我有一个字节数组。我需要将它分配给隐藏的字段并检索结果。如何实现这一目标?

我试过

var data =(byte[])hiddenField.value ;

但它给出了错误

  

无法将字符串转换为bytearray。

4 个答案:

答案 0 :(得分:6)

您需要将其作为字符串存储在隐藏字段中,以便执行以下操作:

hiddenField.Value = Convert.ToBase64String(data);

然后将其转换回来:

byte[] data = Convert.FromBase64String(hiddenField.Value);

如果您也可以提供数据示例,那将会更加彻底。

答案 1 :(得分:2)

试试这个:

获取此字节:

byte[] bytes = System.Text.ASCIIEncoding.ASCII.GetBytes(hiddenField.Value);

再次获取字符串:

string s = System.Text.ASCIIEncoding.ASCII.GetString(bytes);

答案 2 :(得分:0)

我正在使用这种方法:

<强> 1。在JavaScript中

添加一个javascript函数将字节数组(0..127)转换为字符串:

function byteArrayToString(byteArray) {
    var str = "";
    for (var i = 0; i < byteArray.length; i++) {
        str += byteArray[i] + ',';
    }
    str = str.slice(0, -1);
    return str;
}
function getDataFromJavascript()
{
  var somebinarydata = [18,122,96];
  return byteArrayToString(somebinarydata);
}

通过调用javascript函数设置隐藏字段值:

$('#<%= HiddenField1.ClientID %>').val(getDataFromJavascript());

<强> 2。在C#

获取字符串的隐藏字段值,创建一个字符串数组并将其转换为字节数组:

byte[] byteArray = HiddenField1.Value.Split(',').Select(byte.Parse).ToArray();

答案 3 :(得分:0)

您实际上可以按原样存储它,但是不能将其存储在一个字段中。您必须执行如下循环:

 if (Model.YourByteArray != null)
 {
    foreach (var item in Model.YourByteArray)
    {
       <input type="hidden" name="YourByteArray" value="@item">
    }
 }

表单会将其发布到字节数组参数中。