2012-07-25 120 views
0

在C#MVC3解決方案中,我將request.form作爲字符串傳遞給了一個web服務(我知道將它分解並填充模型會更好,但它會隨着舊的代碼和主要是時間),並且由於許多選項和服務失敗,字符串很大。刪除Request.Form的一部分

實際上我不需要所有這些選項,基本上是我需要其中一個的幾個下拉列表,所以我試圖弄清楚如何更改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 

的一部分,我想刪除所有的選項從APPART(本部分)最後一個wich = 2。這個0和2來自一個下拉列表,其名稱是所有參數的其餘部分(即NG2BEF01-16344-181-E-16344-0-SHW_39S * 16344 * EVE * 1 * 1500 * 0),儘管它可能是完全的不同,並不總是遵循這種模式。

有沒有什麼辦法可以擺脫我提交之前在request.form中留下的0的下拉列表(或者甚至在控制器中可以接受)?

+0

你知道集合中的其他元素的名稱?那麼唯一一個動態的是你需要的那個? – 2012-07-25 13:12:36

+0

儘管其餘的已知名稱還很多 – mitomed 2012-07-25 13:22:53

+0

我試着用這個腳本$(「select」)。each(function(){ if($(this).val()== 0) $( this).remove(); });但不幸運 – mitomed 2012-07-25 13:37:03

回答

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