2010-10-13 6 views
3

J'ai un ListBox sur ma page. Je fais un appel AJAX à une fonction C#, et j'ai besoin de transmettre les valeurs des éléments sélectionnés. Voici ce que j'ai:Analyser les données sérialisées jQuery en C#

$('#btnSubmit').click(function() { 
    $.ajax({ 
     type: "POST", 
     url: 'Default.aspx/GetSelectedValues', 
     data: '{selectedValues: ' + $('#lbItems').serialize() + '}', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: OnSuccess 
    }); 
}); 

<select id="lbItems" multiple="multiple"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
    <option value="4">Four</option> 
    <option value="5">Five</option> 
</select> 


[System.Web.Services.WebMethod] 
public static string GetSelectedValues(string selectedValues) 
{ 
    // 
} 

Les données passées à la fonction C# ressemble à:

lbItems=1&lbItems=3&lbItems=5 

Y at-il fonction C# intégré qui peut désérialiser facilement, pour convertir les valeurs en un tableau d'une sorte? Ou peut-être existe-t-il un meilleur moyen de transmettre les données de jQuery?

Répondre

2

Si vous passez les paramètres en JSON, .NET will automatically deserialize the JSON for you.

+0

C'est en fait ma méthode préférée, mais je ne sais pas comment passer un tableau de valeurs (dans ce cas, les valeurs des options sélectionnées) via un appel AJAX. J'ai un post précédent à ce sujet ici: http://stackoverflow.com/questions/3926098/passing-an-array-of-values-in-an-asp-net-jquery-ajax-post. Si vous connaissez un moyen d'utiliser JSON, j'aimerais voir un exemple. – Steven

+0

J'ai répondu à l'autre question, car il était plus sur le sujet là-bas. –

+0

Génial, merci. – Steven

2

Ce type de format est en fait très facile à analyser avec la fonction Split de la classe de chaînes. Il suffit d'utiliser string.Split avec l'esperluette pour obtenir un tableau de chaînes qui sont vos arguments individuels. Et puis fente chacune de ces chaînes sur le signe égal pour obtenir un tableau à deux éléments où l'élément 0 est le nom de la variable et l'élément 1 est la valeur.

Exemple de code:

string data = "lbItems=1&lbItems=3&lbItems=5"; 

    string[] items = data.Split(new char[]{'&'}); 

    foreach (string item in items) 
    { 
     string[] vals = item.Split(new char[]{'='}); 
     Console.WriteLine(vals[0] + ": " + vals[1]); 
    } 
+1

Chacune des paires nom-valeur va être codée en URL, donc vous aurez à gérer cela aussi. –

Questions connexes