JSON.stringify 究竟如何自动映射到我的 DTO

How exactly does a JSON.stringify automatically map to my DTO

我在 jquery 中有一个对象:

function SaveRequest() {
var request = BuildSaveRequest();

$.ajax({
    type: "POST",
    processData: false,
    data: JSON.stringify({'model':request}),
    url: "somepage.aspx/JsonSave",
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function(response, status, xhr) {
    },
    error: function (res, status, exception) {
    }
});
return false;
}

function BuildSaveRequest() {

var request = {
    customerName: $("#CustomerName").val(),
    contactName: $("#ContactName").val(),
};

return request;
}

我有以下 C# 代码:

[WebMethod]
public static string JsonSave(MyModel model)
    {
    }
}

public class MyModel 
{
    public string CustomerName { get; set; }
    public string ContactName { get; set; }
}

当 ajax 调用开始时,Web 方法 JsonSave 会自动将 jquery 对象 'request' 中的值(CustomerName 和 ContactName)放入对象 [=] 中的适当属性中20=]。它怎么知道要这样做???

从评论中添加答案:

Model Binders是一件很美好的事情。

我建议阅读找到的源代码 here 这是针对 MVC 的,但我很确定它在网络表单中的作用也相同。

它真的很聪明,会检查数据的输入请求,所以无论您使用 webforms 还是 mvc 都没有关系。您甚至可以创建我们的 own.