2

我有一个隐藏的字段,其中填充了一个 ID 的 javascript 数组。当我尝试迭代隐藏字段(称为“hidExhibitsIDs”)时,它给了我一个错误(在标题中)。

这是我的循环:

foreach(string exhibit in hidExhibitsIDs.Value)
        {
            comLinkExhibitToTask.Parameters.AddWithValue("@ExhibitID", exhibit);
        }

当我将鼠标悬停在 .value 上时,它说它是“字符串”。但是,当我将“字符串展览”更改为“int 展览”时,它可以工作,但会给我一个内部错误(现在不重要)。

4

6 回答 6

4

您需要转换stringstring array使用 in for 循环到get strings not characters您的循环建议。假设逗号是隐藏字段中的分隔符,隐藏字段值将通过 转换为字符串数组split

foreach(string exhibit in hidExhibitsIDs.Value.Split(','))
{
     comLinkExhibitToTask.Parameters.AddWithValue("@ExhibitID", exhibit);
}
于 2012-09-27T18:20:59.060 回答
3

Value正在返回一个String. 当您对 a 执行 aforeachString,它会遍历其中的各个字符。价值实际上是什么样的?在尝试使用数据之前,您必须正确解析它。

您的代码现在正在做什么的示例:

var myString = "Hey";
foreach (var c in myString)
{
    Console.WriteLine(c);
}

将输出:

H
e
y
于 2012-09-27T18:20:24.940 回答
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);
于 2012-09-27T18:20:27.407 回答
1

在服务器端, a (or ) 的Value属性只是 a ,它的枚举器返回结构。您需要拆分它以迭代您的 ID。HiddenFieldHtmlInputHiddenstringchar

如果您使用 JavaScript 数组在客户端设置隐藏字段的值,则它将是服务器端的逗号分隔字符串,因此可以使用以下方法:

foreach(string exhibit in hidExhibitsIDs.Value.Split(','))
{
     comLinkExhibitToTask.Parameters.AddWithValue("@ExhibitID", exhibit);
}
于 2012-09-27T18:20:30.603 回答
1

Value是一个字符串,它实现了IEnumerable<char>,所以当你foreach遍历一个字符串时,它会遍历每个字符。

我会运行调试器并查看隐藏字段的实际值是什么。它不能是数组,因为当 POST 发生时,它会被转换为字符串。

于 2012-09-27T18:21:58.497 回答
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;
        }
于 2014-07-14T18:27:30.183 回答