Web-API der Formular-Daten-Auflistung
Ich versuche, die post-Formular serialisiert die Werte zum controller (Web-API, selfhosting).
Ich verstehe nicht, warum die NameValueCollection ist nicht richtig gebunden.
Client-Seite mit Hilfe von 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) {
}
});
}
Server-Seite mit Web-API, selfhosting:
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);
}
}
}
Vielen Dank.
InformationsquelleAutor user1824269 | 2012-11-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Statt NameValueCollection, versuchen FormDataCollection.
http://weblogs.asp.net/cibrax/archive/2012/08/10/binding-form-data-in-asp-net-web-api.aspx
InformationsquelleAutor scott stone
Oder verwenden Sie den build "ReadAsNameValueCollection", wie dieses :
InformationsquelleAutor HoefMeistert
Dank Scott. Deine Antwort war genau das, was ich brauchte. Auf dieser Basis schrieb ich das folgende kleine utility-Methode, die wird kommen in praktisch, so zieht es alle Daten, die Werte aus dem Datenstrom (unter Verwendung der FormDataCollection) und stellt Sie in einen NamedValueCollection (die Sie zugreifen können, in beliebiger Reihenfolge, die Sie wollen).
InformationsquelleAutor Brad