2011-11-14 5 views
0

私はフォームコレクション(fc)を持っていますが、私は電子メールに 'key'と 'value'の値を追加しようとしています。私はキー(newKey)で問題はありませんが、私は '値'を適切にコーディングすることはできません。 'for'ループは、キーの最初の3文字がドロップダウンリストから来たことを示す 'ddl'であるかどうかを調べます。その場合、ループはドロップダウンリストコントロール(キーと値のペアの値)から値を追加する必要があります。 (そうでなければ、ループはチェックボックスコントロールの値に基づいてyesまたはnoのいずれかを追加する別のメソッドを呼び出します)事前に感謝します。ASP.Net MVCポスト:キーと値のペア - 値を取得できません

ddlStratacacheConstellationManagerRole:System.Web.Mvc.ValueProviderResult " ddlStratacacheConstellationManagerRole:可能System.String []"、

+0

代わりに何が起こっていますか?出力例(または入力)を教えてください。 – Zruty

+0

最初のsb.Appendは次の値を返します:System.Web.Mvc.ValueProviderResult "seconding sb.Appendは次の値を返します。System.String []"これまでに、私はキー値を省略しました。彼らはちょうど良い出てくるので、上記の結果! – Susan

答えて

0

 //Append new key-value pairs implemented since legacy keys 
     for (int i = 0; i < newKeys.Length; i++) 
     { 

      //Checks for prefix of element to determine type of element 
      if(newKeys[i].Substring(0,3) == "ddl"){ 
       sb.Append(newKeys[i] + ": " + fc.GetValue(newKeys[i]) + "\",<br />"); 
       sb.Append(newKeys[i] + ": " + fc.GetValues(newKeys[i].ToString()) + "\",<br />"); 
      } 
      else{ 
      sb.Append(newKeys[i] + ",\"" + Boolean(fc[newKeys[i]]) + "\",<br />"); 
      } 
     } 

2つのsb.appendコマンドは、以下の戻り書き込み中の値の型がStringでなく、ToString()のメソッドもオーバーライドされていません。

標準のobject.ToString()メソッドが呼び出され、オブジェクトのタイプ名が文字列に追加されるのはこのためです。

これを解決するには、考えられるすべてのフォームコレクションの値のToString()メソッドをオーバーライドするか、コレクションを反復して対応する値を出力する他のアルゴリズムを考える必要があります。