У меня есть следующий метод POST:
public class ModelOuter
{
public int P1 { get; set; }
public int P2 { get; set; }
}
[HttpPost]
public JsonResult Test(int i, ModelOuter m)
{
var result = String.Empty;
var json = new JsonResult();
if (this.ModelState.IsValid)
result = $"good {m.P1} {m.P2}";
else
result = "bad";
json.Data = new { result };
return json;
}
Я хотел бы передать данные для ModelOuter
в данных POST, но я получаю недопустимое состояние модели.
Здесьуспешный запрос POST:
params = {
i: 0,
};
$.ajax({
url: "@this.Url.Content("~/Event/test")",
cache: false,
data: params,
dataType: "json",
type: "POST",
traditional: true,
success: function (data, textStatus, jqXHR) { },
error: function (jqXHR, textStatus, errorThrown) { }
});
Возвращается с таким результатом:
{"result":"good 0 0"}
Вот неудачный запрос:
params = {
i: 0,
m: {
p1: 1,
p2: 2,
}
};
$.ajax({
url: "@this.Url.Content("~/Event/test")",
cache: false,
data: params,
dataType: "json",
type: "POST",
traditional: true,
success: function (data, textStatus, jqXHR) { },
error: function (jqXHR, textStatus, errorThrown) { }
});
Возвращается сэтот результат:
{"result":"bad"}
Информация заголовка (согласно Chrome) выглядит следующим образом:
i: 0
m: [object Object]
i=0&m=%5Bobject+Object%5D
Так что я предполагаю, что проблема как-то связана с тем, как вложенный объект JSONсериализуется?