基本上,我有一个API控制器,其方法如下:
public void Post([FromBody] string value)
{
Repository.Save(value);
}
我的表格是这样构造的:
@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "Post", Url = "/api/MyController"}))
{
<input type="text" name="value" value="" />
<input type="submit" value="Post" />
}
请求被路由到控制器,但由于某种原因,值总是为空。我尝试过使用和不使用FromBody属性。
显然,我可以将值查询字符串参数添加到URL中,但我真的想弄清楚如何用简单的类型发布表单数据(而不是创建自己的DTO类型)。
谢谢!
发布于 2013-09-18 17:15:04
默认情况下,Web尝试从请求URI获取简单类型。FromBody属性告诉Web从请求体读取值。
Web最多只读取一次响应体,因此只有一个操作参数可以来自请求体。如果需要从请求体获取多个值,请定义一个复杂类型。
其次,客户端需要发送以下格式的值:
=值
不是这样的:
value=foo
因此,如果您像这样发布数据,它应该工作得很好,如果您想发送一个简单类型的数组,只需发送类似于这个$.post('/api/myapicontroller', { "": $('#myinput').val() });
的数据。
如果使用Fiddler,只需将=John+Smith
添加到请求正文中,并确保具有如下所示的正确的内容类型:Content-Type: application/x-www-form-urlencoded
。
https://stackoverflow.com/questions/18876694
复制相似问题