Удалить часть запроса. Форма

В решении 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

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

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

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
Другие вопросы по тегам