我正在尝试将表单序列化值发布到 Controller (Web API 自托管)。 我不明白为什么 NameValueCollection 没有正确绑定(bind)。 客户端使用 jQuery:
// Form Submit Handler
$( '#form-parameters' ).submit(function (event) {
event.preventDefault();
var formData = $(this).serialize();
// Post serialized form data
postAssemblyParameters(formData);
});
// Post Form Data to controller test
function postAssemblyParameters(formData){
$.ajax({
url: http://localhost/api/test/1,
type: 'POST',
data: formData,
dataType: 'application/x-www-form-urlencoded',
success: function(x3d) {
},
error: function(xhr) {
}
});
}
服务器端使用 Web API 自托管:
public void Post([FromUri] int id, [FromBody] NameValueCollection formData)
{
Console.WriteLine(id); // OK
// Collection is NULL
foreach (var key in formData.AllKeys)
{
foreach (var val in formData.GetValues(key))
{
Console.WriteLine(key + ": " + val);
}
}
}
非常感谢。
最佳答案
尝试使用 FormDataCollection 而不是 NameValueCollection。
http://weblogs.asp.net/cibrax/archive/2012/08/10/binding-form-data-in-asp-net-web-api.aspx
关于c# - Web API 表单数据收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13605358/