2

フォームのクエリ文字列を受け入れようとしています

?param[key1]=value1&param[key2]=value2

C# MVC 4 でディクショナリに変換します。これは PHP で行うのは簡単ですが、C# でこれを再現する方法を見つけることができませんでした。

私は配列を取ることができることを知っています

?param=value1&param=value2

しかし、それは順序の問題を残し、私の目的にはほとんど役に立ちません。

これがフレームワークの制限ではないことを期待して、C# で辞書スタイルの変換を実装するにはどうすればよいですか?

明確にするために:クエリ文字列をNVCに変換するのではなく、クエリ文字列パラメーターを独自のNVCに変換することを検討しています。これは、ParseQueryString() や Request.QueryString オブジェクトほど単純ではありません。

4

3 に答える 3

2

Asp.Net が提供するコレクションをそのまま使用することはできませんRequest.QueryStringか? MVC を使用しているため、コントローラーControllerContextのプロパティ (そのオブジェクトのHttpContextプロパティにあります) になります。

于 2013-01-31T18:44:13.827 に答える
1

ここで私はあなたのために働くいくつかのコードを修正しました.defoは最善の解決策ではありませんが、うまくいくはずです.

   string basestring = "?param[key1]=value1&param[key2]=value2";
        string newstring = basestring.Replace("?", "").Replace("param[", "").Replace("]", "");
        var array = newstring.Split('&');
        var dictionary = new Dictionary<string, string>();
        foreach (var onestring in array)
        {
            var splitedstr = onestring.Split('=');
            dictionary.Add(splitedstr[0],splitedstr[1]);
        }
于 2013-01-31T18:52:23.223 に答える
0

このようなものを試すこともできます

    public ActionResult SubmitFormWithFormCollection(FormCollection parameters)
    {
        foreach (string param in parameters)
        {
            ViewData[param] = parameters[param];
        }

        return View();
    }
于 2013-01-31T18:47:27.517 に答える