我有一个字节数组。我需要将它分配给一个隐藏的文件并检索结果。如何实现这一点?
我试过了
var data =(byte[])hiddenField.value ;
但它给出了一个错误
无法将字符串转换为字节数组。
我有一个字节数组。我需要将它分配给一个隐藏的文件并检索结果。如何实现这一点?
我试过了
var data =(byte[])hiddenField.value ;
但它给出了一个错误
无法将字符串转换为字节数组。
您需要将其作为字符串存储在隐藏字段中,因此您可以执行以下操作:
hiddenField.Value = Convert.ToBase64String(data);
然后稍后将其转换回来:
byte[] data = Convert.FromBase64String(hiddenField.Value);
如果您也可以提供数据示例,那将更加彻底。
尝试这个:
要获取此字节:
byte[] bytes = System.Text.ASCIIEncoding.ASCII.GetBytes(hiddenField.Value);
再次获取字符串:
string s = System.Text.ASCIIEncoding.ASCII.GetString(bytes);
您可以将字节数组转换为字符串,然后将其存储在隐藏字段中。但是,请不要使用编码方法,Encoding.ASCII.GetString方法将字节数组转换为字符串。相反,您可以使用以下方法将字节数组转换为字符串:
Convert.ToBase64String(byteArray)
此外,您可以从隐藏字段中提取字符串值,然后使用以下方法再次将其转换回字节数组。
Convert.FromBase64String(string)
通过这种方式,您将能够在隐藏字段中存储和检索字节数组值。我这样做是为了在Cookie中存储字符串值。希望这也适用于 HiddenFields。
我正在使用这种方法:
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();
您实际上可以按原样存储它,但不能将其存储在一个字段中。您必须执行这样的循环:
if (Model.YourByteArray != null)
{
foreach (var item in Model.YourByteArray)
{
<input type="hidden" name="YourByteArray" value="@item">
}
}
表单会将其发布到字节数组参数中。