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.
我在 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.