0

C#MVC3ソリューションでは、request.formを文字列としてWebサービスに渡しています(それを分解してモデルに入力する方がはるかに良いことは理解していますが、古いコードと主に時間の経過とともに妥協しています)。多くのオプションのために文字列が巨大であり、サービスに失敗しました。

実際には、このオプションのすべてが必要なわけではありません。基本的にはいくつかのドロップダウン リストから 1 つだけが必要なので、request.form を変更して冗長なものを削除し、維持する方法を見つけようとしています。選択したもの。

これを文脈に入れるには、これは文字列の一部である必要があります(ちょうど真ん中のチャンク)

NG2BEF01-16344-181-E-16344-0-SHW_SHR*16344*MAT*1*2500*1600=0&NG2BEF01-16344-181-E-16344-0-SHW_SHR*16344*MAT*2*5500*6200=0&NG2BEF01-16344-181-E-16344-0-SHW_39S*16344*EVE*1*1500*0=2

そして、(この部分の) 最後のオプション =2 からすべてのオプションを削除したいと思います。この 0 と 2 はドロップダウン リストから来ており、その名前はパラメーターの残りのすべて (つまり、NG2BEF01-16344-181-E-16344-0-SHW_39S*16344*EVE*1*1500*0) ですが、完全に常にこのパターンに従うとは限りません。

送信する前に request.form で 0 のままにしておくドロップダウン リストを削除する方法はありますか (またはコントローラーでも許容されます)。

4

1 に答える 1

1

保持したくない値を除外できます。

var values = HttpUtility.ParseQueryString("NG2BEF01-16344-181-E-16344-0-SHW_SHR*16344*MAT*1*2500*1600=0&NG2BEF01-16344-181-E-16344-0-SHW_SHR*16344*MAT*2*5500*6200=0&NG2BEF01-16344-181-E-16344-0-SHW_39S*16344*EVE*1*1500*0=2");
string result = string.Join("&", values.Cast<string>().Where(key => values[key] == "2").Select(key => string.Format("{0}={1}", key, HttpUtility.UrlEncode(values[key]))));
// The result variable will contain only kvps where the value equals 2
于 2012-07-26T07:07:04.720 に答える