Я пытаюсь найти решение этой проблемы.
В моем коде я создаю массив объекта;
var $marks = [];
var mark = function ( x, y, counter ){
this.x = x;
this.y = y;
this.counter = counter;
}
$marks.push(new mark(1, 2, 0));
$marks.push(new mark(1, 2, 1));
$marks.push(new mark(1, 2, 2));
Теперь я хочу опубликовать эти данные в MVC-контроллере, поэтому я думаю, что тип данных в контроллере будет List<Mark> Marks
или массив Marks.
Чтобы опубликовать данные, я пробовал:
var json = JSON.stringify($marks);
$.post('url', json).done(function(data){ /* handle */ });
ИЛИ
var json = { Marks: $marks };
$.post('url', json).done(function(data){ /* handle */ });
Второй способ, если смотреть на данные, выглядит так:
Marks[0][x]: 1
Marks[0][y]: 2
Marks[0][counter]: 0
Marks[0][x]: 1
Marks[0][y]: 2
Marks[0][counter]: 1
Marks[0][x]: 1
Marks[0][y]: 2
Marks[0][counter]: 2
Но я не уверен, как перевести это в строго типизированный объект в контроллер?
Мой контроллер выглядит следующим образом:
[HttpPost]
public ActionResult JsonSaveMarks(List<Mark> Marks){
// handle here
}
Класс My Mark выглядит следующим образом:
public class Mark{
public string x { get; set; }
public string y { get; set; }
public string counter { get; set; }
}
Я прочитал другие подобные проблемы о создании пользовательского JsonFilterAttribute или используя System.Web.Script.Serialization.JavaScriptSerializer, но я не могу заставить что-нибудь работать
Есть ли что-то очевидное, что я здесь отсутствует? Неужели я неправильно понял DataType в контроллере? Как преобразовать эти данные в строго типизированный объект?
Большое спасибо