0

在 C# MVC3 解决方案中,我将 request.form 作为字符串传递给 Web 服务(我知道将其分解并填充模型会更好,但它会受到旧代码的影响,主要是时间)由于选项很多,字符串很大并且在服务中失败。

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