‘C#’ カテゴリーのアーカイブ

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

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

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で、型 ‘****’ を読み込めませんでした

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

もうここのところ、ずっとC#をやってます。
家では、Androidの開発の勉強を始めるなど、だんだんわけわからない方向に漂ってます。

さて、C#でですが、私が担当してる部分を、既にあるサイトにマージするということになりそうなので、置き場所となるところにコピペして、あとは動作確認しながらやっていこうとした矢先、ハマりました。

例外メッセージ: 型 ‘****’ を読み込めませんでした。

なんですと!調べたところ、ビルドされてないんじゃないか?ということだったので、ビルトしてみたら、ビルドに失敗。原因は、全く同じで、

エラー: 型 ‘****’ を読み込めませんでした。

という。ビルドが出来ない。hoge.aspxの一行目の

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="hoge.aspx.cs" Inherits="hoge" %>

が怪しいわけですが、コピペする前はちゃんと動いてたのにな~と疑問。
最終的に、以下のようにしたら解決しました。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="hoge.aspx.cs" Inherits="hoge" %>

違いは、CodeBehindとCodeFileでした。これらの違いは何なのか?全然理解できてないので、また調べたりしたいものですが、締切のほうが刻々と迫ってるので確認している暇はないのかもしれません。。。