C#泛型处理程序查询数组中的字符串参数

时间:2014-12-02 16:24:56

标签: c# arrays datatables ashx

我有一个数组格式的查询字符串,我试图找出如何使用Context.Request访问子元素

以下是我的查询字符串参数的示例

QueryString

    draw                          1
    search[value]                 test

所以在我的C#通用处理程序(ashx)代码我模仿我将在PHP或Coldfusion中做的事情我做了以下

if (context.Request["search"]["value"] != "") {
 for (int i = 0; i < columns.Count; i++) ...
}

我收到以下错误

  

错误CS1502:'string.this [int]'的最佳重载方法匹配   有一些无效的论点

知道我是怎么写这篇文章的吗?

2 个答案:

答案 0 :(得分:2)

我认为这不可能(至少按照你期望的方式),但你仍然可以从查询字符串(例如search=test&search=test1)传递数组(但只是数组,而不是字典)服务器端你可以像这样接收这些值:

string[] searches = context.Request.Form.GetValues("search");
//searches[0] = "test"
//searches[1] = "test1"

更新1。

如果你仍然需要它类似于字典,你可以做一个解决方法。首先,您需要以不同的方式查询字符串,例如(|将充当分隔符):

search=value|test&search=value1|test1

然后服务器端你可以做这样的事情:

var value1Value = context.Request.Form.GetValues("search")
.ToList()
.Select(x => x.Split("|"))
.Where(x => x[0] == "value1")
.Select(x => x[1])
.FirstOrDefault(); //test1

(获得准确值)

foreach (var keyValue in context.Request.Form.GetValues("search").ToList().Select(x => x.Split("|")))
{
    //keyValue[0] = value and value1
    //keyValue[1] = test and test1
}

(迭代所有值)

答案 1 :(得分:0)

这就是我最终访问查询字符串数组的方法

var searchString = context.Request["search[value]"];

var sortColumnIndex = Convert.ToInt32(context.Request["order[0][column]"]);
var sortDirection = context.Request["order[0][dir]"]; // asc or desc