最終更新日:
ASP.NET についての簡単な紹介。
環境設定
Visual Studio 2019 Community (Windows)の場合
ASP.NETプロジェクト(空)を作成する
Webフォームの追加
- プロジェクトで「追加」「Webフォーム」によりaspxを追加
データベースの作成
- プロジェクトで「追加」「SQL Serverデータベース」を実行
- App_Dataフォルダを作るか聞かれたらYesとする
- サーバーエクスプローラーでmdfファイルを作成する
- テーブルを追加する
- 保存ボタンによりテーブルを保存する
フォームの作成
フォーム(aspx)の作成
- プロジェクトで「追加」「Webフォーム」によりaspxを追加
フォームのデザイン(view)
- プロジェクトでaspxをクリックし「デザイン」タブを選択する
- ツールボックスからボタン、エディットボックス、ラベル、などを追加する
フォームのソース(controller)
- デザイン画面でボタンなどをダブルクリックするとvb/csファイルが生成されイベントが追加される
- コードを追加する
データベースの操作(追加)
-
'接続
Dim cn As New SqlConnection("データベース画面の”接続文字列”をコピーする")
cn.Open() -
'データ追加(文字列の前に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 + "')"
-
'コマンド実行
Dim cmd As New SqlCommand(strSql, cn)
Dim numResult As Integer
numResult = cmd.ExecuteNonQuery()
-
'接続クローズ
cn.Close()
データベースの操作(表示)
-
ツールボックスでテーブルを追加しておく
コレクションに行を追加する
行のコレクションにセルを追加する
-
'データ取得して表形式で表示
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()
セッション
セッション変数の利用
セッションの設定
- Session("SessionValue")=10
- Session.Item("SessionValue")=10
セッションの取得
- lbl.Text = Session("SessionValue")
有効期限の設定
web.configに<sessionState timeout="30">のように指定する
セッション以外の値の保持(ViewState)
SessionValueの代わりにViewStateを使う
ViewState("ViewStateValue")=10
セッション以外の値の保持(Cookie)
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")
妥当性検証
検証コントロールの追加
ツールボックスの「検証」からデザインビューにドラッグ&ドロップして使う
- RequiredFieldValidator
- ID:
- ControlToValidate:対象のコントロールを指定する
- ErrorMessage:エラーメッセージ
- RangeValidator
- ID:
- ControlToValidate:対象のコントロールを指定する
- ErrorMessage:エラーメッセージ
- MaximumValue:最大値
- MinimumValue:最小値
- Type:Integer
- RegularExpressionValidator
- ID:
- ControlToValidate:対象のコントロールを指定する
- ErrorMessage:エラーメッセージ
- ValidationExpression:リストから選択
文字列の変換(エスケープ処理)
- lbl1.Text = System.Web.HttpUtility.HtmlEncode("a<br>b")
- lbl2.Text = System.Web.HttpUtility.HtmlDecode(lbl1.Text)
jqueryのインストールを求められた場合
以下のNuGetパッケージを追加する:
- AspNet.ScriptManager.jQuery
- Microsoft.AspNet.ScriptManager.MSAjax
- Microsoft.AspNet.ScriptManager.WebForms
参考資料
- ASP.NETの絵本(株式会社アンク)