На стороне сервера у меня следующий класс
public class EditorContext
{
public Module Module { get; set; }
public Holder Holder { get; set; }
}
public class Module
{
public string CodeName { get; set; }
public string Content { get; set; }
}
public class Holder
{
public int Id { get; set; }
public int Type { get; set; }
}
public class EditorController : Controller
{
[HttpPost]
public ActionResult AddModule(EditorContext context)
{
return Json(new { });
}
}
С клиента я отправляю запрос вот так
var data =
{
Module:
{
CodeName: 1,
Content: 2
},
Holder:
{
Type: 3,
Id: 4
}
};
$.ajax({
type: "POST",
url: 'Editor/AddModule',
data: JSON.stringify(data),
async: false,
success: function () {
},
error: function (xhr, status, error) {
throw new Error();
}
});
1 - Fiddler показывает, что он отправил {"Модуль": {"CodeName": 1, "Content": 2}, "Holder": {"Type": 3, "Id": 4}} , но на сервере Request.Form =% 7b%22Module% 22% 3a% 7b% 22CodeName% 22% 3a1% 2c% 22Content% 22% 3a2% 7d% 2c% 22Holder% 22% 3a% 7b% 22Type% 22% 3а3% 2c% 22Id% 22% 3a4% 7d%7d , ПОЧЕМУ?
2 - Если вместо «JSON.stringify (data)» я использую «postify», как в здесь , поэтому EditorController.AddModule получает уже заполненный EditorContext.Это означает изменение данных на "Model.CodeName = 1 & Model.Content = 2 & Holder.Type = 3 & Holder.Id = 4".Итак, почему таким образом EditorContext автоматически заполняется связывателем по умолчанию, а в (1) - нет?
Спасибо