2014-12-02 5 views
0

У меня есть строка запроса, которая находится в виде массива, и им пытаются выяснить, как я бы доступ к югу элементов, используя Context.RequestC# строки запроса общего обработчика параметров в массиве

Вот пример моей строки запроса Титулы

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

это, как я в конечном итоге доступ к строке запроса массивы

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 
2

Я не думаю, что это возможно (по крайней мере так, как вы ожидаете), но вы все равно можете передать массив (а просто массив, а не словарь) из строки запроса (например, search=test&search=test1) и на стороне сервера может получить эти значения следующим образом:

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

Update 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 
} 

(перебор всех значений)

+0

хорошо его не итеративный QueryString, по крайней мере, это один не является (есть и другие), но в этом случае, строка запроса пары является поиск [ 'значения '] фактическое значение слова –

+0

@JayRizzi обновил мой ответ, который позволит вам выполнять итерацию. – Vladimirs

+0

спасибо, это было полезно, но я искал то, что я разместил –