在HTML上:
<div>
<button onclick="clicker()">Click Me!</button>
</div>
<script type="text/javascript">
function clicker() {
var data = {
id: 1,
name: 'julius'
};
$.ajax({
type: 'POST',
url: '/api/test/',
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8"
});
}
</script>
在控制器上:
public class TestController : ApiController
{
public void Post([FromBody]string value)
{
Console.WriteLine();
}
}
控制器上变量“value”的值为null,但是,我将数据传递给ajax调用。有人可以解释为什么会这样吗?
答案 0 :(得分:2)
不是尝试以字符串形式接收发布的内容,而是创建一个封装您要发布的属性的对象:
public class Data
{
public int id { get; set; }
public string name { get; set; }
}
然后将您的控制器更改为:
public class TestController : ApiController
{
public void Post(Data value)
{
int id = value.id;
string name = value.name;
}
}
如果你真的想以字符串形式收到发布的数据,那么Darrel Miller撰写的这篇博文可能有所帮助: