ASP.NET Web API:将Object Literal转换为CLR类

时间:2013-12-03 15:18:33

标签: asp.net-web-api

我的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<串,对象>

非常感谢你的帮助。

1 个答案:

答案 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.
}

这比属性包方法更安全,并且可以为您节省大量的转换和打字问题。