我正在尝试使用 EXT.NET 库从 webclient 制作 HTTPPOST。
这是我的电话的样子
<ext:Button ID="dugmeOdobri" runat="server" Text="Odobri Narudžbe" Icon="Accept" >
<DirectEvents>
<Click
Success="sayHello(result);"
Url="http://dnndev.me:9010/DesktopModules/WebApiSpn/API/odobrenje/odobri"
Type="Load"
Method="POST"
CleanRequest="true"
Json="true" >
<ExtraParams>
<ext:Parameter Name="Values" Value="Ext.encode(#{DocumentsGrid}.getRowsValues({selectedOnly:true}))" Mode="Raw" />
</ExtraParams>
</Click>
</DirectEvents>
</ext:Button>
Fiddler 和 Chromes 的 F11 捕获调用是这样的
{"Values":"[{\"ID\":6894443,
\"SkladisteSifra\":\"001\",
\"SkladisteNaziv\":\"Skladi\\u0161te Veleprodaje RGT\",
\"StatusCode\":null,
\"StatusDescription\":\"Aktivna\",
\"Broj\":\"000009\",
\"Datum\":\"2013-06-13T00:00:00\",
\"PartnerSifra\":\"24055\",
\"PartnerNaziv\":\"15 APRIL\",
\"Napomena\":\"UGALJ\",
\"TipDokumenta\":\"VEL - Narud\\u017eba dobavlja\\u010du-slikovnica \",
\"Odobriti\":true,
\"Editable\":true}
]"}
当我将该字符串粘贴到 json2csharp时, 我得到这样的 poco:
public class RootObject
{
public string Values { get; set; }
}
我想要的是像这样反序列化我对 poco 的请求:
public class RootObject
{
public int ID { get; set; }
public string SkladisteSifra { get; set; }
public string SkladisteNaziv { get; set; }
public object StatusCode { get; set; }
public string StatusDescription { get; set; }
public string Broj { get; set; }
public string Datum { get; set; }
public string PartnerSifra { get; set; }
public string PartnerNaziv { get; set; }
public string Napomena { get; set; }
public string TipDokumenta { get; set; }
public bool Odobriti { get; set; }
public bool Editable { get; set; }
}
服务器端的方法应该如何?到目前为止,我在过去 3 小时内尝试了 n 个组合中的一个
[HttpPost]
[AllowAnonymous]
public string odobri(HttpRequestMessage request)
{
Dictionary<string,string> values = request.Content.ReadAsAsync<Dictionary<string, string>>().Result;
narudzbeZaOdobriti c = null; ;
foreach (string s in values.Values)
{
c = Newtonsoft.Json.JsonConvert.DeserializeObject<narudzbeZaOdobriti>(s);
break;
}
return c.Broj;
}
我无法找到我做错的地方,我对 Web Api 的调用是否遗漏了什么?