我正在尝试获取发布请求以使用网络api。以下是我的api控制器。
public class WebsController : ApiController
{
[HttpPost]
public void PostOne(string id)
{
}
[HttpPost]
public void PostTwo(Temp id)
{
}
}
我已更改了webapi路由以考虑该操作。Temp模型看起来像这样。
public class Temp
{
public string Id { get; set; }
}
我的观点看起来像这样
@using (Ajax.BeginForm(new AjaxOptions
{
Url = "/api/webs/postone",
HttpMethod = "post"
}))
{
<input name="id" id="id" value="2" />
<input type="submit" value="submit" />
}
除非我将[FromBody]属性放在这样的参数前面,否则上述代码对postone完全不起作用。
[HttpPost]
public void PostOne([FromBody]string id)
{
}
然后执行操作,但ID仍为null。它不会填充文本框中的值。
但是,如果我改变Url
了的Ajax.BeginForm
要posttwo
内搭模型Temp
,它很好地工作和Id
领域在文本框中得到应有的价值。
谁能解释一下发生这种情况的原因,以及如何将简单的值发布到网络api操作中?我的意思是,为什么它可以绑定复杂类型而不绑定简单类型。