這似乎並不像我想象的那麼容易。我在網上找到了一些解決方案,但他們不適合我。我有一個安裝了Microsoft ASP.Net Web API 2.1 nuget包的ASP.Net MVC 3項目。現在,我希望能夠讀取發佈到web api控制器的數據。發送的數據會有所不同,所以我不能使用強類型的ViewModel。如何在ASP.Net MVC 3 Web API 2.1控制器中讀取POST數據?
這裏是我試過的解決方案:
public void Post([FromBody]string value)
{
...
}
public void Post([FromBody]List<string> values)
{
...
}
public void Post([FromBody]NameValueCollection values)
{
...
}
但我的一個或多個值的變量總是空的。我知道然而,所述控制器接收數據,因爲我可以通過訪問(System.Web.HttpContextWrapper)Request.Properties [「MS_HttpContext」]檢查它。的Request.Form。它看起來不像檢索數據的正確方式。應該有一個更清潔的方式。
UPDATE:
這裏是我我發佈的信息:
我從另一個控制器發佈的數據在同一個Web應用程序:
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();
}
這裏是什麼我在我的郵政網頁API控制器越來越如果我聲明像這樣的HttpContext的變量:
var httpContext = (System.Web.HttpContextWrapper)Request.Properties["MS_HttpContext"];
httpContext.Request.Form = {VIEWNAME = EmailTest &從= FROMADDRESS%40yahoo.com &要=的toAddress%40gmail.com &全名=約翰史密斯+ &地址= www.mysite.com}
httpContext.Request.Form是System.Collections.Specialized.NameValueCollection {} System.Web.HttpValueCollection
你可以添加你如何將數據發佈到API的例子嗎? –
@JonSusiak請在我原來的帖子中查看UPDATE部分。我剛剛添加了你問我的信息。 –