多くのWebサイト/アプリケーションで使用されるWeb APIを作成しようとしています。C#Web Api(非MVC)辞書パラメータ
Apiは動的であるため、辞書としてパラメータを取ります。
C#方法:メソッドに
[HttpPost]
public Dictionary<string, string> ApiTest(Dictionary<string, string> parameters)
{
Dictionary<string, string> dic_data = new Dictionary<string, string>();
foreach (KeyValuePair<string, string> tmp in parameters)
{
dic_data[tmp.Key] = tmp.Value;
}
return dic_data;
}
Ajaxのコール:
私はcontentTypeのを左に注意してください: "アプリケーション/ jsonの" それはCORSを含むことについて不平を言うよう
を許可var data = {"parameters":{"product_id":"1","product_model":"HFJ5G1.5","product_type":"plat","product_return":"graviteits"}};
//var data = {AlbumName: "Dirty Deeds",Songs:[ { SongName: "Problem Child"},{ SongName: "Squealer"}]};
var parameters = {};
parameters['1'] = 10;
parameters['2'] = 11;
$.ajax({
type :'POST',
url : 'http://localhost:8082/api/WebController/ApiTest/',
dataType : 'json',
data: parameters ,
success : function(data) {
console.log(data);
私もこのパラメータをバインドしてみました:
public class myParameters
{
public Dictionary<string,string> parameters { get; set; }
}
public Dictionary<string, string> ApiTest(myParameters parameters)
まだ運がありません。
ブラウザコンソールでは、APIから「{}」を返信し続けるだけです。
多くの例を見てきましたが、どれも役に立たないようです。 I(ModelBinderのもののような)ので、コメントと回答の一部は私を超えていた、まだC#に非常に新しいです
Passing List of KeyValuePair or IDictionary to Web Api Controller from Javascript
Method with Dictionary Parameter in Asp.Net Web API
WebApi bind body to Json dictionary
Deserialize JSON into dictionary in Web Api controller
更新:
数時間の検索の後、私はAPIをホストする同じサイトからAPIへの「ローカル」呼び出しを行うことにしました。 その後、私はcontentType: 'application/json;という場所に置くことができました。文字セット= UTF-8' 、だから今、それはより正常に動作している場合、私の検索が+ C#アピ+辞書+ CORS