【发布时间】:2016-11-08 05:43:12
【问题描述】:
我的问题是,当我将完整的 Javascript 对象发送到我的 Web API 控制器时,我总是得到空值。即使我有一个完整的对象,我也需要指定每个属性和值,如下所示。如何让 Web API 接受现成的 Javascript 对象并正确绑定?
C# Web API 控制器:
[Route("addcredentials/{salesId}")]
[HttpPost]
public IHttpActionResult AddCredentials([FromUri] int salesId, [FromBody] ScriveCredentials credentials)
{
return Ok(credentials);
}
C# 凭据对象:
public class Credentials
{
public string ClientIdentifier { get; set; }
public string ClientSecret { get; set; }
public string TokenIdentifier { get; set; }
public string TokenSecret { get; set; }
}
传递给资源的 Javascript 对象,进一步保存为“结果”:
{ClientIdentifier: "a", ClientSecret: "b", TokenIdentifier: "c", TokenSecret: "d"}
资源方法:
addCredentials: {
method: 'POST',
url: 'api/addcredentials/:userSalesId'
}
导致空值的用法:
userResource.addCredentials({ userSalesId: user.SalesId }, { credentials: result}).$promise.then(function (data) {
console.log(data);
});
此请求的负载:
{"credentials":{"ClientIdentifier":"a","ClientSecret":"b","TokenIdentifier":"c","TokenSecret":"d"}}
可行但似乎过于复杂的用法:
userResource.addCredentials({ userSalesId: user.SalesId }, { ClientIdentifier: result.ClientIdentifier, ClientSecret: result.ClientSecret, TokenIdentifier: result.TokenIdentifier, TokenSecret: result.TokenSecret }).$promise.then(function (data) {
console.log(data);
});
请求负载:
{"ClientIdentifier":"a","ClientSecret":"b","TokenIdentifier":"c","TokenSecret":"d"}
更新
尝试了以下,它也没有工作,所有值都为空:
addScriveCredentials: {
method: 'POST',
url: 'api/addcredentials/'
result.SalesId = user.SalesId;
userResource.addCredentials({}, { credentials: result }).$promise.then(function (data) {
console.log(data);
});
C#:
[Route("addcredentials")]
[HttpPost]
public IHttpActionResult Addcredentials(Credentials credentials)
{
return Ok(credentials);
}
【问题讨论】:
标签: javascript c# angularjs