我有這個api控制器操作,需要一個對象「ContentList」作爲參數。發佈對象到MVC控制器使用HttpWebRequest,WebClient等
[HttpPost]
public List<string> SendList(string param, ContentList list)
{
List<string> testReturn = new List<string> { "test1", "test2", "test3", "test4" };
return testReturn ;
}
我迄今爲止嘗試是調用這樣一個控制器的動作:
Uri _uri = new Uri("http://localhost:xxxxx/api/FakeTest/SendList?param=test");
var serializer = new JavaScriptSerializer();
string requestData = serializer.Serialize(new
{
list = ContentList,
});
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.ContentType] = "application/json";
var result = client.UploadData(_uri, Encoding.UTF8.GetBytes(requestData));
var tempString = Encoding.UTF8.GetString(result);
}
在這個例子中,tempString = 「測試1」, 「測試2」, 「TEST3」,「TEST4 「]如由控制器動作重新啓動。
在控制器操作中,我可以訪問在ContentList中傳遞的屬性,並返回它們的值(相應地改變行爲的返回值)。
但是,在控制器操作中,我需要發送ContentList對象進行進一步處理,而這似乎失敗了。我得到一個500內部服務器錯誤,並且我不能在控制器中設置一個斷點來跟蹤傳入的值。調試器從未擊中它...
我期望這與將json發送給控制器行動。
無論如何,似乎ContentList被從控制器動作發送到的代碼拒絕,所以我想我需要做一些反序列化,對吧?
底線,問題是,從代碼調用控制器動作,傳入C#對象並使其可用於控制器操作的正確方法是什麼?
它實際上是一個MVC 4 api控制器。 – Soeren
檢查這個問題,有解釋如何將json信息傳遞給控制器:http://stackoverflow.com/questions/560575/asp-net-mvc-how-to-pass-json-object-from-view-to-控制器作爲參數 – Bardo