我想创建一个接受application / xml内容的动作。
到目前为止,我已经创建了这个。
function getUrl(suffix) {
if (suffix)
return 'http://localhost:8080/accounts/'+getAccountId()+'/groups/'+suffix;
else
return 'http://localhost:8080/accounts/'+getAccountId()+'/groups';
}
...
createGroup: function(groupName, display) {
var deferred = $q.defer();
$http.post(getUrl(groupName), display)
.success(function (response) {
var display = response.data.display;
deferred.resolve(new Display(display));
})
.error(function(response) {
deferred.reject('Failed to retrieve display: ' + response.message);
});
return deferred.promise;
},
当我发布以下内容时
namespace App.Areas.Test.Controllers
{
public class UserModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
public class TestController : ApiController
{
[HttpPost]
public UserModel Test([FromBody] UserModel um)
{
return um;
}
}
}
我最终得到了这个回复
<?xml version="1.0" encoding="UTF-8" ?>
<UserModel>
<FirstName>Some Name</FirstName>
<LastName>Some Last Name</LastName>
<Age>30</Age>
</UserModel>
我尝试删除<UserModel i:nil="true" />
属性,但这也没有帮助。由于某种原因,内容不会绑定到现有模型。
答案 0 :(得分:0)
您是否添加了Content-Type
:application\xml
标题?您需要通知序列化器主体的格式。
答案 1 :(得分:0)
这样做就可以了......
var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter;
xml.UseXmlSerializer = true;