C#でRequest.Form.getValuesできない場合

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と同じように処理できるようになった。
他にもっとスマートな方法があるようでしたら、教えてもらいたいなぁ~。


タグ ASP.Net, C# | パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です