Wie liest du die POST-Daten in einem ASP.Net MVC 3 Web API 2.1-controller?
Scheint dies nicht so einfach wie ich dachte. Ich habe einige Lösungen gefunden, die auf der web, aber Sie sind nicht für mich arbeiten. Ich habe eine ASP.Net MVC 3-Projekt mit Microsoft ASP.Net Web API 2.1 nuget-Paket installiert ist. Nun, ich möchte in der Lage sein, Daten zu Lesen, geschrieben auf einen web-api-controller. Die Daten, die gesendet werden, variieren, so habe ich nicht verwendet, eine stark typisierte ViewModel.
Hier sind die Lösungen habe ich versucht:
public void Post([FromBody]string value)
{
...
}
public void Post([FromBody]List<string> values)
{
...
}
public void Post([FromBody]NameValueCollection values)
{
...
}
Aber mein Wert oder die Werte, die Variablen sind immer leer. Ich weiß, der controller empfängt Daten, aber da kann ich es überprüfen, indem Sie den Zugriff (System.Web.HttpContextWrapper)Anfordern.Properties["MS_HttpContext"].Anfrage.Form. Es sieht nicht aus wie der richtige Weg, um die Daten abzurufen, obwohl. Es sollte ein sauberer Weg.
UPDATE:
Hier ist, wie ich die Buchung der Informationen:
Ich die Buchung der Daten von einem anderen controller in der gleichen web-Anwendung:
public ActionResult SendEmailUsingService()
{
dynamic email = new ExpandoObject();
email.ViewName = "EmailTest";
email.From = "[email protected]";
email.To = "[email protected]";
email.Fullname = "John Smith";
email.Url = "www.mysite.com";
IDictionary<string, object> data = email;
using (var wb = new WebClient())
{
string url = BaseUrlNoTrailingSlash + Url.RouteUrl("DefaultApi", new { httproute = "", controller = "Emailer" });
var response = wb.UploadValues(url, "POST", data.ToNameValueCollection());
}
return View();
}
Und hier ist das, was ich in mein Post-web-api-controller, wenn ich erkläre ein httpContext-Variablen wie diese:
var httpContext = (System.Web.HttpContextWrapper)Request.Properties["MS_HttpContext"];
httpContext.Anfrage.Form =
{ViewName=EmailTest&From=fromaddress%40yahoo.com&To=toaddress%40gmail.com&Fullname=John+Smith&Url=www.mysite.com}
httpContext.Anfrage.Form ist ein System.Sammlungen.Spezialisierte.NameValueCollection {System.Web.HttpValueCollection}
- Kannst du Beispiele, wie du Postest die Daten an die API?
- Bitte sehen Sie sich den Abschnitt UPDATE in meinem ursprünglichen post. Ich habe gerade die Informationen, die Sie Fragen mich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schließlich fand ich die Antwort auf meine Frage hier:
Web-API der Formular-Daten-Auflistung
Die Lösung ist die Verwendung FormDataCollection: