0

Webクライアントを介して別のシステムに送信するメソッドに渡される名前値コレクションがあります。

public string DoExtendedTransferAsString(string operation, NameValueCollection query, FormatCollection formats)
{
    System.Net.WebClient client = new System.Net.WebClient();
    client.QueryString = query;
    client.QueryString["op"] = operation;
    client.QueryString["session"] = SessionId;
    using (Stream stream = client.OpenRead(url))
    {
        FormatCollection formats = new FormatCollection(stream);
    }
    return formats;
}

NameValueCollection内のすべての値に対してHttpUtility.HtmlEncodeを実行する必要がありますが、その方法がわかりません。注意:呼び出し元のコードを変更できないため、NameValueCollectionである必要があります。

ありがとう

4

3 に答える 3

3

これを試して

myCollection.AllKeys
    .ToList()
    .ForEach(k => myCollection[k] = 
            HttpUtility.HtmlEncode(myCollection[k]));
于 2010-12-03T14:10:58.080 に答える
0

MSDNから:

class MyNewClass
   {
      public static void Main()
      {
         String myString;
         Console.WriteLine("Enter a string having '&' or '\"'  in it: ");
         myString=Console.ReadLine();
         String myEncodedString;
         // Encode the string.
         myEncodedString = HttpUtility.HtmlEncode(myString);
         Console.WriteLine("HTML Encoded string is "+myEncodedString);
         StringWriter myWriter = new StringWriter();
         // Decode the encoded string.
         HttpUtility.HtmlDecode(myEncodedString, myWriter);
         Console.Write("Decoded string of the above encoded string is "+
                        myWriter.ToString());
      }
   }

for / foreachループで、コレクション内の各値のエンコード部分を実行します。

これがあなたが探していたものではない場合は、質問でより明確にしてください。

于 2010-12-03T13:48:38.877 に答える
0

私はこれがあなたが望むものを達成すると思います...

    public string DoExtendedTransferAsString(string operation, NameValueCollection query, FormatCollection formats)
    {
        foreach (string key in query.Keys)
        {
            query[key] = HttpUtility.HtmlEncode(query[key]);
        }

        System.Net.WebClient client = new System.Net.WebClient();
        client.QueryString = query;
        client.QueryString["op"] = operation;
        client.QueryString["session"] = SessionId;
        using (Stream stream = client.OpenRead(url))
        {
            FormatCollection formats = new FormatCollection(stream);
        }
        return formats;
    }

そこに追加した foreach に注意してください。すべてのキーを反復処理し、キーを使用して各項目を取得し、HtmlEncode を呼び出して、すぐに元に戻します。

于 2010-12-03T13:59:46.083 に答える