2

IDのjavascript配列が入力される非表示フィールドがあります。非表示のフィールド(「hidExhibitsIDs」と呼ばれる)を反復しようとすると、(タイトルに)エラーが表示されます。

これは私のループです:

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

.valueにカーソルを合わせると、「文字列」と表示されます。しかし、「stringexhibit」を「intexhibit」に変更すると機能しますが、内部エラーが発生します(現時点では重要ではありません)。

4

6 に答える 6

4

ループが示唆するように、forループを使用するように変換stringする必要があります。隠しフィールドの区切り文字がコンマであるとすると、隠しフィールドの値は。によって文字列配列に変換されます。string arrayget strings not characterssplit

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

Valueを返していStringます。でを実行するforeachと、Stringその中の個々の文字を繰り返し処理します。値は実際にはどのように見えますか?データを使用する前に、正しく解析する必要があります。

あなたのコードが今やや行っていることの例:

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

サーバー側では、 (または)のValueプロパティは単なる、であり、その列挙子は構造体を返します。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 に答える