C # (.NET) для обработки массивов / сериализации Javascript - PullRequest
1 голос
/ 20 августа 2009

Я использую tableDnD, чтобы переупорядочить строки таблицы, а затем сериализовать их, используя "$ .tableDnD.serialize ()"

Я хочу отправить это на C # для обработки, что лучше для этого сделать?

Ниже приведен пример сериализации

pages[]=&pages[]=21&pages[]=23&pages[]=34&pages[]=37&pages[]=40&pages[]=43&pages[]=46&pages[]=49&pages[]=31&pages[]=50&pages[]=51&pages[]=52&pages[]=53&pages[]=54&pages[]=55&pages[]=56&pages[]=57&pages[]=58&pages[]=61&pages[]=65&pages[]=70&pages[]=74&pages[]=77&pages[]=78&pages[]=79&pages[]=82&pages[]=85&pages[]=88&pages[]=91&pages[]=94&pages[]=97&pages[]=100&pages[]=103&pages[]=106&pages[]=109&pages[]=112&pages[]=115&pages[]=119&pages[]=122&pages[]=123

Важная информация Я отметил это как MVC, но забыл упомянуть об этом. Я использую ASP.NET MVC

Ответы [ 3 ]

2 голосов
/ 20 августа 2009

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

var str = 'pages[]=&pages[]=21&pages[]=23&pages[]=34&pages[]=37&pages[]=40&pages[]=43&pages[]=46&pages[]=49&pages[]=31&pages[]=50&pages[]=51&pages[]=52&pages[]=53&pages[]=54&pages[]=55&pages[]=56&pages[]=57&pages[]=58&pages[]=61&pages[]=65&pages[]=70&pages[]=74&pages[]=77&pages[]=78&pages[]=79&pages[]=82&pages[]=85&pages[]=88&pages[]=91&pages[]=94&pages[]=97&pages[]=100&pages[]=103&pages[]=106&pages[]=109&pages[]=112&pages[]=115&pages[]=119&pages[]=122&pages[]=123';

var tmpArr = str.split('&');
var pagesArr = [];
for(var i = 0;i < tmpArr.length; i++) {
    var paramArr = tmpArr[i].split('=');
    if(paramArr[1] != null && paramArr[1] != '') {
        pagesArr.push(paramArr[1]);
    }
}
alert(pagesArr); //now much prettier

//turn it into a CSV string
var pagesCsv = pagesArr.join(',');

$.ajax({
   type: "POST",
   url: "some.aspx",
   data: pagesCsv,
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
 });
0 голосов
/ 20 августа 2009

Вы также можете поместить все в один объект, например так:

var prm = { pages=[...], someOtherPages=[], additionalParam="", integer=1324 }
jQuery.ajax({
    url: "someurl.aspx",
    type: "POST",
    data: {prm: JSON.stringify(prm)},
    });

и проанализируйте prm на стороне C # с помощью этого анализатора JSON :

JObject json = JObject.Parse(Request.Form["prm"]);
JArray items = json["pages"] as JArray;
foreach (JToken item in items)
{
   int i = item["type"].Value<int>(); // take an item as int
   string s = item["type"].Value<string>(); // take an item as string
   JArray ar = item["complex"] as JArray; // that an item as an array
}

намного проще и гибче

0 голосов
/ 20 августа 2009

На примере karim79 :

var str = 'pages[]=&pages[]=21&pages[]=23&pages[]=34&pages[]=37&pages[]=40&pages[]=43&pages[]=46&pages[]=49&pages[]=31&pages[]=50&pages[]=51&pages[]=52&pages[]=53&pages[]=54&pages[]=55&pages[]=56&pages[]=57&pages[]=58&pages[]=61&pages[]=65&pages[]=70&pages[]=74&pages[]=77&pages[]=78&pages[]=79&pages[]=82&pages[]=85&pages[]=88&pages[]=91&pages[]=94&pages[]=97&pages[]=100&pages[]=103&pages[]=106&pages[]=109&pages[]=112&pages[]=115&pages[]=119&pages[]=122&pages[]=123';

var pos = null;
var index = 0;

while ((pos=str.indexOf("[]"))>-1)
{
    str = str.substr(0, pos-1) + "_" + (index) + str.substr(pos+2);
    index++;
}

alert(str);


$.ajax({
   type: "POST",
   url: "some.aspx",
   data: str,
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
 });

In C #

        string[] keys = Request.QueryString.AllKeys;
        Array.Sort(keys);

        StringBuilder sb = new StringBuilder();
        foreach (string key in keys)
        {
            if (key.IndexOf("pages_")!=-1)
            {
                sb.Append(Request.QueryString[key]);
            }
        }

        // sb container the all values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...