我的Web API控制器需要接收一个属性包,即一个键值对列表,它将用于插入或更新不确定类型的记录。我理想的代码看起来像这样。这个例子是插入一条新记录。
路线:
/api/data/{EntityName}
来自客户端的数据,使用jQuery.ajax()(或类似)传递给POST:
URI:
http://mysite/api/data/employee
Post data:
"values":
{"FirstName":"Jim",
"LasName":"Nobody",
"StartDate": new Date(),
"Salary": 100000 }
Web API控制器功能:
public HttpResponseMessage PutRecord(string entity, ??? values)
{
// confirm valid entity, look up metadata.
// Take values from "values" and feed them into my framework to insert a new employee.
}
完成此任务的理想配置是什么?控制器方法中“值”的类型是什么 - 可能是Dictionary<串,对象>
非常感谢你的帮助。
答案 0 :(得分:0)
如果您创建具有所有属性的模型,模型绑定器会将您的发布数据直接映射到模型。
所以你的帖子看起来更像是这样:
$.post(url, {FirstName:'Jim', LasName: 'NoBody',StartDate: someDate, Salary: 10000},
function(data){
// do something with callback
});
你的行动看起来像:
public HttpResponseMessage PutRecord(string entity, employeeModel model)
{
// confirm valid entity, look up metadata.
// Take values from "values" and feed them into my framework to insert a new employee.
}
这比属性包方法更安全,并且可以为您节省大量的转换和打字问题。