top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
この3連休で 結構 Visual C# + ASP.NETでの開発に詳しくなりました。
C#でプログラミングしていて、Stringとstringや Decimal と decimal のように、プリミティブ型と参照型 (C#での正式な名前かどうかチェックしていないなぁ) の2種類あります。私は Javaの経験があったから、反射的に 大文字から始まる方を利用していましたが、もしかすると小文字スタートの型を好んで利用した方が良いのかも知れません。(困ったことに Stringはstringの単なる別名というわけでは無いのです) TextBox.Text などは 小文字のstringであるようなので、私が利用するのも 小文字スタート版であるのが望ましいのかなぁ…って思ってみたりします。しかし C#のプリミティブ型と参照型って 言語としての垣根がすごく低くって キャストが双方向に動作する模様です。Javaの経験があるとこの所作が気持ち悪くて仕方が無いのですが、、、CLRとかいう仕組みに準じているからこれはこういうものなのかも知れませんね。
私なりの ASP.NET + C# 開発時のフレームワークらしきものが見えてきたのでこれをメモ
テーブル毎にデータベースアクセサを準備する。これは コンポーネントクラスとして実装する。
LabelMessage というエラーメッセージ用ラベルフィールドを準備
画面上のTextBoxなどは テーブルの項目名と対応させる。『TextBox項目名』のようにネーミングする。
private void Page_Load(object sender, System.EventArgs e)
{
// ログイン済チェック
if(Session["ログイン情報など"]==null)
{
Response.Redirect("最初の画面.aspx");
}
if(IsPostBack)
{
GetFormValues();
}
else
{
SetInitialFormValues();
}
SetFormValues();
}
/// <summary>
/// 最初の一回だけのフォームの初期化を行います。
/// </summary>
private void SetInitialFormValues()
{
}
/// <summary>
/// フォーム内容の設定を行います。
/// </summary>
private void SetFormValues()
{
ClearErrorMessages();
// 初期化処理
}
/// <summary>
/// フォームにユーザが入力&選択した情報を吸い上げます。
/// </summary>
private void GetFormValues()
{
}
/// <summary>
/// エラーメッセージ類をクリアします。
/// </summary>
private void ClearErrorMessages()
{
LabelMessage.Text = "";
}
/// <summary>
/// 入力項目の妥当性をチェックします。
/// </summary>
/// <returns></returns>
public bool ValidateFormValues()
{
ClearErrorMessages();
// ここに入力項目チェック機能を実装します。
return true;
}
しばらくこれで使ってみて様子を見てみようと思います。
2時間ほど この現象の理解に時間を消費させられました。とにかく 基本的に Page_Load()が自動的に呼ばれるという点などを よく考える必要があります。IsPostBack変数に対する考慮も重要です。なまじ ASP.NET がブラックボックス化しているだけに こいつの理解は ちと難易度が高かったです。暇が捻出できたら インフラとしてのASP.NETに関する資料を読みたいと思いました。