Передача массива из javascript в c#
у меня есть массив в 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 ответов
вы можете отправить его как строку 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. Но для этого, чтобы работать есть 2 важные вещи, которые должны быть включены в запрос:
- в Заголовок запроса 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)
{
}
var xhr = new XMLHttpRequest();
xhr.open("POST", "mypage/SaveView");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify({ myArray: someArray }));