ASP.Netだけで完結しているシステムなら関係ないのかもしれないが、WebAPIだと何から呼ばれるかわからない。それが、PHPからかもしれないわけですよ。そうしたら、
// POSTされてるのは、values[0], values[1]など if (Request.Form.getValues("values") == null) { // 呼ばれちゃう Debug.WriteLine("valuesがnullだってさ!"); }
ということになってしまった。こんなのはphpやってる俺からしたら想定外の出来事。どうもvalues=aaa&values=bbbという感じで、ようやくgetValuesで値が取得できるみたいだけど、普通か、これ?
このC#で動いてるWebAPIをコールするプログラムは、PHPで動いてるWebAPIもコールしに行くので(言語が違うだけで動作は全く同じWebAPI)コールするプログラム側は変えられないので、C#側を変更するしかなさそうだと。
ということで、genericクラスを使うことにした。
int i = 0; System.Collections.Generic.List<string> values = new System.Collections.Generic.List<string>(); while(Request.Form.Get("values[" + i + "]") != null){ values.Add(Request.Form.Get("values[" + i + "]")); i++; } if(values.Count == 0){ // valuesはPOSTされてない }
なんとか、これで、PHPと同じように処理できるようになった。
他にもっとスマートな方法があるようでしたら、教えてもらいたいなぁ~。