解説記事:ASP.NET

最終更新日:

ASP.NET についての簡単な紹介。


環境設定

Visual Studio 2019 Community (Windows)の場合

ASP.NETプロジェクト(空)を作成する

Webフォームの追加

  1. プロジェクトで「追加」「Webフォーム」によりaspxを追加

データベースの作成

  1. プロジェクトで「追加」「SQL Serverデータベース」を実行
  2. App_Dataフォルダを作るか聞かれたらYesとする
  3. サーバーエクスプローラーでmdfファイルを作成する
  4. テーブルを追加する
  5. 保存ボタンによりテーブルを保存する


フォームの作成

フォーム(aspx)の作成

  1. プロジェクトで「追加」「Webフォーム」によりaspxを追加

フォームのデザイン(view)

  1. プロジェクトでaspxをクリックし「デザイン」タブを選択する
  2. ツールボックスからボタン、エディットボックス、ラベル、などを追加する

フォームのソース(controller)

  1. デザイン画面でボタンなどをダブルクリックするとvb/csファイルが生成されイベントが追加される
  2. コードを追加する

データベースの操作(追加)

  1. '接続
    Dim cn As New SqlConnection("データベース画面の”接続文字列”をコピーする")
    cn.Open()
  2. 'データ追加(文字列の前にNを付けるとunicode自動変換が実行されないので文字化けしなくなる)
    Dim strSql As String
    strSql = "INSERT INTO Worker(Id, Name, Department, Mail)VALUES(" _
    + txtId.Text + ",N'" + txtName.Text + "',N'" _
    + txtDepartment.Text + "',N'" + txtMail.Text + "')"
  3. 'コマンド実行
    Dim cmd As New SqlCommand(strSql, cn)
    Dim numResult As Integer
    numResult = cmd.ExecuteNonQuery()
  4. '接続クローズ
    cn.Close()

データベースの操作(表示)

  1. ツールボックスでテーブルを追加しておく
    コレクションに行を追加する
    行のコレクションにセルを追加する
  2. 'データ取得して表形式で表示
    Dim strSql As String
    strSql = "SELECT * FROM Worker"
    
    Dim cmd As New SqlCommand(strSql, cn)
    
    Dim dr As SqlDataReader = cmd.ExecuteReader()
    
    While dr.Read()
        Dim tRow As New TableRow()
        Dim tCell1 As New TableCell()
        Dim tCell2 As New TableCell()
        Dim tCell3 As New TableCell()
        Dim tCell4 As New TableCell()
    
        tCell1.Text = dr("Id").ToString()
        tRow.Cells.Add(tCell1)
        tCell2.Text = dr("Name").ToString()
        tRow.Cells.Add(tCell2)
        tCell3.Text = dr("Department").ToString()
        tRow.Cells.Add(tCell3)
        tCell4.Text = dr("Mail").ToString()
        tRow.Cells.Add(tCell4)
    
        tblShow.Rows.Add(tRow)
    End While
    
    dr.Close()
                    


セッション

セッション変数の利用

セッションの設定

  1. Session("SessionValue")=10
  2. Session.Item("SessionValue")=10

セッションの取得

  1. lbl.Text = Session("SessionValue")

有効期限の設定

web.configに<sessionState timeout="30">のように指定する

セッション以外の値の保持(ViewState)

SessionValueの代わりにViewStateを使う
ViewState("ViewStateValue")=10

Response.Cookies("CookieValue").Item = 10

'有効期限を設ける場合(30日の例)
Response.Cookies("CookieValue").Expires = DateTime.Now.AddDays(30)

アプリケーション変数

'複数のユーザーで共有するため排他処理を行う
Application.Lock()
Application("ApplicationValue") = 10
Application.UnLock()

別のページへの移動

Server.Transfer("b.aspx")

'HTTPレスポンスとして、別のURLへ切り替える命令をブラウザに返す
Response.Redirect("b.aspx")

ページ間の値の受け渡し

'ボタンをおしたときのPostBack先のURLを指定
コントロールのPostBackUrlプロパティにaspxファイルまたはURLを指定する

'POSTによる値の受け取り方
'サーバーコントロールの値の受け取り
lblInput.Text = DirectCast(Me.PreviousPage.FindControl("textWebInput"), TextBox).text 'HTMLコントロールからの値の受け取り
lblInput.Text = Request.Form("txtHtmlInput")

'GETによる値の受け取り方
'受け取るページ
lblInput.Text = Request.Form("txtHtmlInput")
lblInput.Text = Request.QueryString("key")


妥当性検証

検証コントロールの追加

ツールボックスの「検証」からデザインビューにドラッグ&ドロップして使う

  1. RequiredFieldValidator
  2. ID:
  3. ControlToValidate:対象のコントロールを指定する
  4. ErrorMessage:エラーメッセージ
  1. RangeValidator
  2. ID:
  3. ControlToValidate:対象のコントロールを指定する
  4. ErrorMessage:エラーメッセージ
  5. MaximumValue:最大値
  6. MinimumValue:最小値
  7. Type:Integer
  1. RegularExpressionValidator
  2. ID:
  3. ControlToValidate:対象のコントロールを指定する
  4. ErrorMessage:エラーメッセージ
  5. ValidationExpression:リストから選択

文字列の変換(エスケープ処理)

  1. lbl1.Text = System.Web.HttpUtility.HtmlEncode("a<br>b")
  2. lbl2.Text = System.Web.HttpUtility.HtmlDecode(lbl1.Text)

jqueryのインストールを求められた場合

以下のNuGetパッケージを追加する:

  1. AspNet.ScriptManager.jQuery
  2. Microsoft.AspNet.ScriptManager.MSAjax
  3. Microsoft.AspNet.ScriptManager.WebForms


参考資料

  • ASP.NETの絵本(株式会社アンク)