Post 给 webapi 控制器的值
Post value to webapi controller
这是我的 WebAPI 控制器和 html 表单。通过 myValue 始终为 null 将请求正确路由到控制器中的方法。我认为这是 post 从一些教程中获取它的有效方法。
控制器:
[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>
使用 post 参数有一些注意事项。
这是我找到的最好的资源:
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 });
不确定如何在您的示例中修复它........但我想我给了您正确的值来尝试发送。
我曾经遇到过同样的问题,使用 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"));
}
你可以这样试试。
[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);
}
您不能 POST 使用 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 为您的操作 POST 设置单个值:
$('#formOne').submit(function () {
$.post('ninja/add', { "": $('input[name=myValue]').val() })
.success(function () {
//do something
})
.error(function () {
//show error
});
return false;
});
这是我的 WebAPI 控制器和 html 表单。通过 myValue 始终为 null 将请求正确路由到控制器中的方法。我认为这是 post 从一些教程中获取它的有效方法。
控制器:
[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>
使用 post 参数有一些注意事项。
这是我找到的最好的资源:
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 });
不确定如何在您的示例中修复它........但我想我给了您正确的值来尝试发送。
我曾经遇到过同样的问题,使用 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"));
}
你可以这样试试。
[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);
}
您不能 POST 使用 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 为您的操作 POST 设置单个值:
$('#formOne').submit(function () {
$.post('ninja/add', { "": $('input[name=myValue]').val() })
.success(function () {
//do something
})
.error(function () {
//show error
});
return false;
});