发布到webapi控制器的值
这是我的WebAPi控制器和html表单。请求通过myValue正确路由到控制器中的方法始终为空。我认为这是一个有效的方式来从一些教程中获得它。发布到webapi控制器的值
控制器:
[Route("add")]
public string Post([FromBody]string myValue)
{
return string.Format("HAIAA: [{0}]" , myValue);
}
查看:
<form id="formOne" method="post" action="ninja/add">
<input type="text" name="myValue" />
<input type="submit" value="submit" />
</form>
您无法使用HTML表单向Web API操作发布简单类型参数。无论是使用含有您的参数复杂类型:
public class MyFormData {
public string myValue { get; set; }
}
改变你的控制器签名:
[Route("add")]
public string Post([FromBody]MyFormData data)
{
return string.Format("HAIAA: [{0}]" , data.myValue);
}
或者使用AJAX的单值张贴到你的行动:
$('#formOne').submit(function() {
$.post('ninja/add', { "": $('input[name=myValue]').val() })
.success(function() {
//do something
})
.error(function() {
//show error
});
return false;
});
非常感谢您的确认!现在我可以把它留在我身后继续前进。 Jeeez在这上面花了很多时间。大量的文章说,虽然你可以,但显然你不能。 – Lautaro
有警告使用后的参数。
这里是我已经找到了最好的资源:
http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/
最有可能的:
// POST api/values
public string Post([FromBody]string value) {
return value;
}
这怪事:
你需要需要送过来是值
{ '': value }
这是jQuery的
$.post('ninja/add', { '': value });
不完全知道如何解决它在你的榜样........但我认为我给你正确的值来尝试发送。
Im不从jQuery发布。我正在做一个正常的HTTP表单发布。 – Lautaro
是的......我意识到这一点。我只是给你jquery的等价物。你需要格式化你发送给帖子的内容,这就是我要说的。 :) – granadaCoder
但我可能会自己切换到jQuery。 – granadaCoder
我有同样的问题一次,它的工作对我来说,使用System.Net.Http.Formatting.FormDataCollection
,这需要代表发送为application-x-www-form-urlencoded
数据对象尝试
public string Post(System.Net.Http>formatting.FormDataCollection data)
{
return string.Format("HAIAA: [{0}]" , data.Get("myValue"));
}
这个工程!我已经知道了。我试图找出什么是数据的形式规则。 – Lautaro
你可以试试这个方法。
[Route("add")]
public string Post(System.Net.Http.Formatting.FormDataCollection myValue)
{
NameValueCollection nvc = form.ReadAsNameValueCollection();
string value = nvc.Get("myValue");
return string.Format("HAIAA: [{0}]", value);
}
检查怎么形成的正在提交数据。因为对于'[FromBody]'来说,提交值的格式必须是“输入的值”。删除'[FromBody]'属性,它应该工作 – Nkosi