Удалить часть Request.Form

В решении C # MVC3 я передаю 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

И я хотел бы удалить все параметры, кроме (в этой части) последнего, который = 2. Эти 0 и 2 берутся из выпадающего списка, имя которого является всем остальным параметром (например, NG2BEF01-16344-181-E-16344-0-SHW_39S*16344*EVE*1*1500*0), хотя он может быть полностью разные, не всегда следуют этому шаблону.

Есть ли способ избавиться от выпадающих списков, которые я оставляю равным 0 в форме request.form перед отправкой (или даже в контроллере было бы приемлемо)?


person mitomed    schedule 25.07.2012    source источник
comment
Вы знаете названия других элементов в коллекции? Значит, вам нужен только тот, который динамичен?   -  person Steen Tøttrup    schedule 25.07.2012
comment
Хотя их довольно много, остальные имена известны   -  person mitomed    schedule 25.07.2012
comment
Я пытаюсь использовать этот скрипт $(select).each(function(){ if($(this).val() == 0) $(this).remove(); }); Но пока не повезло   -  person mitomed    schedule 25.07.2012
comment
Ок, предыдущий код работает, хотя я искал неверный id формы   -  person mitomed    schedule 25.07.2012


Ответы (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
person Darin Dimitrov    schedule 26.07.2012