我有这个将对象“ContentList”作为参数的 api 控制器操作。
[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 = ["test1","test2","test3","test4"] 由控制器操作重新运行。
在控制器动作中,我可以访问传入的 ContentList 的属性,并返回它们的值(当然相应地更改动作返回值)。
但是,在控制器操作中,我需要发送 ContentList 对象以进行进一步处理,这似乎失败了。我收到 500 内部服务器错误,我无法在控制器中放置断点来跟踪传入的值。调试器永远不会命中它......
我希望这与将 json 发送到控制器操作有关。
无论如何,似乎 ContentList 被从控制器操作发送到的代码拒绝了,所以我想我需要进行某种反序列化,对吧?
底线,问题是,从代码中调用控制器操作、传入 C# 对象并使其可从控制器操作中使用的正确方法是什么?