删除部分Request.Form

时间:2012-07-25 12:46:58

标签: c# asp.net-mvc request.form

在C#MVC3解决方案中,我将request.form作为字符串传递给webservice(据我所知,将其分解并填充模型会更好,但是它会被旧代码和主要时间损坏)和在一个步骤中,由于许多选项而且字符串很大并且服务失败。

实际上我不需要所有这些选项,基本上是几个下拉列表,我只需要其中一个,所以我想弄清楚如何更改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

我想删除(在此部分中)最后一个wich = 2的所有选项。这个0和2来自一个下拉列表,其名称是参数的其余部分(即NG2BEF01-16344-181-E-16344-0-SHW_39S * 16344 * EVE * 1 * 1500 * 0)虽然它可能是完全的不同,并不总是遵循这种模式。

有没有什么方法可以摆脱我在request.form中留下0的下拉列表,然后再提交(甚至在控制器中也可以接受)?

1 个答案:

答案 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