2012-06-27 3 views
0

Что является допустимым способом добавления пары ключ-значение из кода ASP.NET/JavaScript в словарь C#? ТИА.Добавление элементов в словарь C# из JavaScript

+0

Что такое упорство в C# словаря? Поскольку оба бита кода выполняются в разное время, постоянство словаря должно быть больше, чем просто жизненный цикл страницы. – Richard

+0

Я попытался использовать post-backs, но у меня, похоже, не хватает знаний для реализации нескольких независимых циклов обратной связи (поскольку у меня уже есть событие post-back, которое обрабатывает некоторые другие данные). Я знаю C# достаточно хорошо, но я новичок в использовании его вместе с ASP/JS. –

ответ

1

Как я перевалено это требование, чтобы получить все данные в паре значение имени в JavaScript, а затем отправить это на сервер через AJAX ...

например LOC ваша страница, имяМетода будучи WebMethod в коде позади страницы, аргументы вы можете заполнить в

var arguments = '"data":"name1=value1&name2=value2"'; 

$.ajax({ 
    type: "POST", 
    url: loc + "/" + methodName, 
    data: "{" + arguments + "}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: onSuccess, 
    fail: onFail 
}); 

На вашем коде позади, создать веб-метод например

[System.Web.Services.WebMethod(EnableSession = true)] 
public static string ItemsForDictionary(string data) 
{ 
    Dictionary<String, String> newDict = ConvertDataToDictionary(data); 
} 

Я использую общий метод преобразования этого параметра данных в код в словарь.

private static System.Collections.Generic.Dictionary<String, String> ConvertDataToDictionary(string data) 
    { 

     char amp = '&'; 
     string[] nameValuePairs = data.Split(amp); 

     System.Collections.Generic.Dictionary<String, String> dict = new System.Collections.Generic.Dictionary<string, string>(); 

     char eq = '='; 

     for (int x = 0; x < nameValuePairs.Length; x++) 
     { 
      string[] tmp = nameValuePairs[x].Split(eq); 
      dict.Add(tmp[0], HttpUtility.UrlDecode(tmp[1])); 

     } 

     return dict; 
    } 

Любой .. надеется, что это дает вам представление ...

+0

Спасибо. По-видимому, я не правильно оценил, сколько я должен ожидать от этой задачи. –

0

Вы не можете сделать это напрямую. Вам придется отправить данные обратно на сервер с помощью обратного вызова или ajax-вызова, а затем добавить данные в словарь в обработчике на стороне сервера.

Мы могли бы быть более полезными, если вы разместите часть своего кода, чтобы показать, что вы на самом деле пытаетесь сделать.

+0

Текущий код - это слишком много беспорядка спагетти, но идея такова. С учетом: класс C#, который генерирует и отображает настроенную таблицу HTML, в которой каждая строка содержит, среди прочего, ячейку с кнопкой в ​​ней; каждая ячейка и каждая строка имеют назначенный идентификатор. Задача: записать событие OnClick для кнопки, которая при запуске генерирует определенное число, берет его вместе с идентификатором строки (т. Е. Извлекает его со стороны C#) и сохраняет полученную пару в постоянном словаре C# для последующего поиска. –

Смежные вопросы