我有一个隐藏字段,其中填充了ID的javascript数组。当我尝试迭代隐藏字段(称为“hidExhibitsIDs”)时,它给出了一个错误(在标题中)。
这是我的循环:
foreach(string exhibit in hidExhibitsIDs.Value)
{
comLinkExhibitToTask.Parameters.AddWithValue("@ExhibitID", exhibit);
}
当我将鼠标悬停在.value上时,它表示它是“字符串”。但是,当我将“字符串展览”更改为“int exhibit”时,它会起作用,但会给我一个内部错误(现在不重要)。
答案 0 :(得分:4)
您需要将string
转换为string array
,以便在循环建议中使用for for循环到get strings not characters
。假设逗号是隐藏字段中的分隔符,隐藏字段值将按split
转换为字符串数组。
foreach(string exhibit in hidExhibitsIDs.Value.Split(','))
{
comLinkExhibitToTask.Parameters.AddWithValue("@ExhibitID", exhibit);
}
答案 1 :(得分:2)
Value
正在返回String
。当您在foreach
上执行String
时,它会迭代其中的各个字符。价值实际上是什么样的?在尝试使用数据之前,您必须正确解析它。
您的代码现在正在做些什么的示例:
var myString = "Hey";
foreach (var c in myString)
{
Console.WriteLine(c);
}
将输出:
H
e
y
答案 2 :(得分:2)
您可以使用Char.ToString
转换
链接:http://msdn.microsoft.com/en-us/library/3d315df2.aspx
如果您想转换char
标签,可以使用此功能char[] tab = new char[] { 'a', 'b', 'c', 'd' };
string str = new string(tab);
答案 3 :(得分:1)
在服务器端,Value
(或HiddenField
)的HtmlInputHidden
属性只是string
,其枚举器返回char
个结构。您需要将其拆分以迭代您的ID。
如果使用JavaScript数组在客户端设置隐藏字段的值,它将是服务器端的逗号分隔字符串,因此这样的内容将起作用:
foreach(string exhibit in hidExhibitsIDs.Value.Split(','))
{
comLinkExhibitToTask.Parameters.AddWithValue("@ExhibitID", exhibit);
}
答案 4 :(得分:1)
Value
是一个字符串,它实现IEnumerable<char>
,所以当你foreach
超过字符串时,它会循环遍历每个字符。
我会运行调试器,看看隐藏字段的实际值是什么。它不能是一个数组,因为当POST发生时,它会被转换为一个字符串。
答案 5 :(得分:1)
public static string reversewordsInsentence(string sentence)
{
string output = string.Empty;
string word = string.Empty;
foreach(char c in sentence)
{
if (c == ' ')
{
output = word + ' ' + output;
word = string.Empty;
}
else
{
word = word + c;
}
}
output = word + ' ' + output;
return output;
}