Передать массив из JavaScript в C # - PullRequest
7 голосов
/ 15 января 2012

У меня есть массив в javascript, и мне нужно, чтобы получить его в мой c # webMethod.Каков наилучший способ сделать это?

мой код C # выглядит так:

 [WebMethod]
public static void SaveView(string[]  myArray, string[] filter)
{
}

РЕДАКТИРОВАТЬ -

Мои данные JSON выглядит так:

{"myArray":[{"name":"Title","index":"Title","hidden":false,"id":"1","sortable":true,"searchoptions":{"sopt":["cn","eq","bw","ew"]},"width":419,"title":true,"widthOrg":150,"resizable":true,"label":"Title","search":true,"stype":"text"},{"name":"Author","index":"Author","hidden":false,"id":"3","sortable":true,"searchoptions":{"sopt":["cn","eq","bw","ew"]},"width":419,"title":true,"widthOrg":150,"resizable":true,"label":"Author","search":true,"stype":"text"}]}

Но я не работаю ... Есть идеи, почему?

Большое спасибо.

Ответы [ 2 ]

17 голосов
/ 15 января 2012

Вы можете отправить его в виде строки JSON.Вот пример использования jQuery:

var array = [ 'foo', 'bar', 'baz' ];
$.ajax({
    url: '/foo.aspx/SaveView',
    type: 'POST',
    contentType: 'application/json',
    data: JSON.stringify({ myArray: array }),
    success: function(result) {

    }
});

Если ваш метод страницы возвращает что-то, вы должны использовать свойство result.d в обратном вызове успеха, чтобы получить результат вызова метода страницы.

Если вы не используете jQuery, вам придется вручную учитывать различия браузеров при отправке запроса AJAX.Но для того, чтобы это работало, в запрос необходимо включить две важные вещи:

  • Заголовок запроса Content-Type должен быть установлен в application/json
  • Полезная нагрузка запроса должна бытьJSON, например: { myArray: [ 'foo', 'bar', 'baz' ] }

ОБНОВЛЕНИЕ:

Теперь, когда вы обновили свой вопрос, кажется, что вы больше не желаете отправлять массив строк.Поэтому определите модель, которая будет соответствовать структуре JSON, которую вы отправляете:

public class Model
{
    public string Name { get; set; }
    public string Index { get; set; }
    public bool Hidden { get; set; }
    public int Id { get; set; }
    public bool Sortable { get; set; }
    public SearchOption Searchoptions { get; set; }
    public int Width { get; set; }
    public bool Title { get; set; }
    public int WidthOrg { get; set; }
    public bool Resizable { get; set; }
    public string Label { get; set; }
    public bool Search { get; set; }
    public string Stype { get; set; }
}

public class SearchOption
{
    public string[] Sopt { get; set; }
}

, а затем:

[WebMethod]
public static void SaveView(Model[] myArray)
{
}
2 голосов
/ 15 января 2012
var xhr = new XMLHttpRequest();
xhr.open("POST", "mypage/SaveView");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify({ myArray: someArray }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...