我有一个数组格式的查询字符串,我试图找出如何使用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]'的最佳重载方法匹配 有一些无效的论点
知道我是怎么写这篇文章的吗?
答案 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