miau's blog?

ASP.NET その1

9 月末に ASP.NET を使ってる案件のヘルプに入りまして。
初めは「3 日間限定で」みたいな話だったんですが、なんだかわからないうちにずるずる最近まで手伝ったりしていて、漸くそれが落ち着いたのでそのお話でも。

なんか色々とネタが溜まってるので何回かに分けます。
今回は、
・事のあらまし
・導入
・導入当初に役に立つ Tips
みたいな感じで。




■はじまり

元々の発端は、9 月頃。
私の仕事がそこそこ落ち着いていたんですが、「ASP ってわかる?」とか聞かれて。
VBScript は WSH で使ったりしてるので「ASP 特有の部分を勉強すればなんとかなるとは思います」くらいに答えておいたんですが、それで実際ヘルプに入ることになりまして。

ASP の勉強を軽くやってたんですけど(VBScript のコード記述規則 とか気にしてたのも実はそのため)、実はプロジェクトで使ってるのは ASP.NET(言語は VB.NET)だとか。(それが判明したのはヘルプに入る 2 日前とか)
・・・いや、それは無謀では。

仕方ないので軽く VB.NET の勉強とかしつつ。
わけわかないまま色々手伝いました。


■入門ページ

@IT:連載:プログラミングASP.NET なんてページがあったので、必要そうなところを拾い読みして始めたんですが、これだとちょっと情報不足ですね。Validator の存在とか知りませんでしたし。(作ってたのがユーザ入力のない画面なので良かったですが)

ASP.NET の特徴を一通り押さえた入門ページということでは、こちらのほうがいいかも。

Microsoft ASP.NET クイック スタート チュートリアル

あと、イベント処理順序は押えておかないと、変なところで苦労します。
(初めの頃 PostBack されたデータを Load イベントで処理しようとしてました・・・)

ASP.NET 1.1 イベント・メソッドの処理順序


■コーディング規約

プロジェクトにコーディング規約なかったので、このへんを参考にしつつコーディングしました。

Visualize - Resources - ASP.Net Coding Standards

ObjectClub - コーディング規約の会Top→「VB.NET コーディング標準」


■エディタ

ツールにはちゃんと手になじんだエディタを登録しておきましょう。
サクラエディタを登録するのであれば、以下みたいな感じで。

「ツール」→「外部ツール」→「追加」で、

タイトル: サクラエディタ(&S)
コマンド: D:\sakura\sakura.exe
引数: $(ItemPath) -X=$(CurCol) -Y=$(CurLine)
初期ディレクトリ: $(ItemDir)

サクラエディタのパスは適当に変更してください。
あとアクセスキーで S を割り当ててるけど、「サーバーに接続(S)」と被るので嫌なら別ので。


■慣れないと、ハマること

くだらないけど、たまにハマっちゃう出来事とか。

・チェックアウトしてるのに「読み込み専用」になっていて編集できない
 →大抵デバッグ中なのが問題

・ブレークポイントでブレークできない
 →Release ビルドになってることも

・コンパイルで「出力できない」エラー
 →.dll も VSS に入れちゃってるとか。
  VS.NET 上で管理すればそんなことにはならないはず。

・「コントロールが見つからない」的エラー
 →.aspx を HTML ビューで編集した場合とか。
  いったんデザイナビューで表示したらよかったりも。

・「デザイナ ビューで開けませんでした。'<% ..."value" ... %>'ブロック内にあるそれぞれの値を引用符で区切ってください。」
 →「デザイナ ビューで開けませんでした。」エラーの対処 に書いてるとおり、

<A href="<%= Hoge.GetHoge("huga")%>">aaa</A>

  こんな感じでダブルクォートをネストしようとしてるのが問題。
  対策は書いてる通りだけど、見つけにくいので

^(?:[^"']|(["'])(?:(?!\1).)*?\1)*?(["'])((?:(?!\2|<).)|<[^>]*>)*?<(?:(?!\2|>).)*?\2

  こんな正規表現用意してました。

・なんか「構成がおかしい」とか言われる
 →ソリューションのリビルドで解決することも。


■備忘

なんか忘れてしまうこと。

・Debug.Write() の代替は System.Diagnostics.Debug.Write()

・HTML エンコードは、Server.HtmlEncode() で

・URL エンコードは、設定にもよりそうだけどとりあえず

<globalization requestEncoding="shift_jis" responseEncoding="shift_jis" />

 この設定の場合で説明すると、Server.UrlPathEncode() は UTF8 でのコードがエンコードされるのに対して、Server.UrlEncode() は SJIS でのコードがエンコードされる様子。
 ので、上記の設定では Server.UrlEncode() の方を使えば OK。


■備忘(フォーマット周り)

Repeater 使うことが多かったので、フォーマット周りのこと。

・日付の「MMM」を "Jun" とか "Fri" の表記に

Public en_US As New Globalization.CultureInfo("en-US") '日付部分を "Jun" みたいに表示するのに使用

 こんな宣言しておいて、.aspx 側では

<%# CDate(DataBinder.Eval(Container.DataItem, "Hoge_Date")).ToString("ddMMMyy", en_US) %>


・その他は Format() 関数で適当に

Format(DataBinder.Eval(Container.DataItem, "Hoge_Date"), "yyyy年M月d日") ' YYYY年M月d日
Format(DataBinder.Eval(Container.DataItem, "Hoge_Number"), "#,##0") ' カンマ区切り

posted at 09:18:19 on 2005-12-16 by miau - Category: Work No Trackbacks - Permalink

TrackBack

このエントリにトラックバックはありません
現在トラックバックは受け付けていません。

Comments

No comments yet

Add Comments

現在コメントは受け付けていません。
お手数ですが、 こちら のコメント欄にでも記載していただければと思います。