(ASP.NETとVB.NET) MVCでhello worldを表示する

ASP.NETとVB.NETのMVC-Webアプリでhello worldを表示するサンプルです。
(確認環境:Microsoft Visual Studio Community 2019)

目次

サンプル プロジェクトを作成する / Web画面を確認
  MVCでhello worldを表示する
  1.コントローラーを追加(MVCのC) / コードを確認
  2.ビューを追加(MVCのV) / Web画面を確認 / ビューのコメント
  3.モデルを追加(MVCのM) / Web画面を確認

プロジェクトを作成する

1.Visual Studioを起動し、「新しいプロジェクトの作成」をクリックします。

 

または、「ファイル」→「新規作成」→「プロジェクト」をクリックします。

 

2.Visual Basicの記載がある「ASP.NET Webアプリケーション(.NET Framework)」を選択し
「次へ」を押します。

 

3.プロジェクト名を決めます。
プロジェクト名はasp-test1にしました。「作成」ボタンを押します。

 

4.「MVC」を選択して作成ボタンを押します。
※作成に時間がかかるようです。ボタンを早く押すとうまく行かない場合があります。

 

Web画面を確認

1.画面上部にある「IIS Express(Google Chrome)」をクリックします。
図の左端の選択肢は「Debug」を選択します。

 

2.ブラウザに以下の画面が表示されれば成功です。

URLは、以下でした。ポート番号(44320)は環境によって変わります。
https://localhost:44320/

 

3.Web画面を停止するときは、赤い四角のボタンを押します。

 

MVCでhello worldを表示する

以下は、MVCの概要図です。

Mとは、Modelのことでロジックを記述します。
Vとは、Viewのことで画面表示の役割です。
Cとは、Controllerのことで画面遷移などを管理します。

1.コントローラーを追加(MVCのC)

1.コントローラーを追加します。
ソリューションエクスプローラーの「Controllers」を右クリックして、「追加」→「コントローラー」をクリックします。

 

2.「MVC5 コントローラー 空」を選択して追加ボタンを押します。

 

3.コントローラー名をつけます。
コントローラ名はTest1Controllerにしました。

 

コードを確認

コントローラを作成すると以下のコードが生成されます。

Imports System.Web.Mvc

Namespace Controllers
    Public Class Test1Controller
        Inherits Controller

        ' GET: Test1
        Function Index() As ActionResult
            Return View()
        End Function
    End Class
End Namespace

4行目のクラス名は、上記で名前をつけたコントローラー名(Test1Controller)になっています。
9行目の戻り値は、/Views/Test1(クラス名のControllerの前部分)/Index(メソッド名).cshtmlを返します。

 

2.ビューを追加(MVCのV)

1.コントローラのコードのFunctionの行のあたりで右クリックし「ビューの追加」をクリックします。

 

2.ビュー名を追加します。レイアウトページの使用のチェックを外し「追加」ボタンを押します。

 

3.以下は、自動で生成されたビューです。12行目にHello Worldを追加しました。
ファイル名はIndex.vbhtmlにします。

@Code
    Layout = Nothing
End Code
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div> 
        Hello World
    </div>
</body>
</html>

1~3行目は、デフォルトのレイアウトは無し(nothing)になっています。
(上記ダイアログの「レイアウトページの使用」でチェックを外したため)

Test1Controller.vbのTest1は、Views配下のTest1フォルダと連携しています。
ここが一致していないと動かないので注意してください。

 

Web画面を確認

Web画面を確認します。
1.Index.vbhtmlのコードの画面を開き※、画面上部にある「IIS Express(Google Chrome)」をクリックします。図の左端の選択肢は「Debug」を選択します。

※画面確認時に、vbhtmlを開く理由
開始動作の設定が「現在のページ」になっているためです。
プロジェクトを右クリック→プロパティ→「Web」→「開始動作」で確認できます。

 

2.Hello Worldが表示されます。

URLは以下です。ポート番号は環境で変わります。
https://localhost:44320/Test1または
https://localhost:44320/Test1/Index
Test1は、コントローラの名称の左側の部分です。

 

3.確認が完了したら以下の四角のボタンを押して停止します。

 

ビューのコメント

ビューでのコメントの書き方です。

@*
    コメント1
*@
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>TestModel</title>
</head>
<body>
    <div>
        @*
         コメント2
        *@
    </div>
</body>
</html>

1~3行目と12~14行目はコメントです。
コメントの開始は@*で終了は*@です。

 

3.モデルを追加(MVCのM)

モデルを追加してhello worldを表示するサンプルです。

1.「Models」で「追加」→「新しい項目」をクリックします。
※Web画面が起動している場合は押せません。停止して下さい。

 

2.「Visual Basic」→「クラス」をクリックします。
ファイル名は、ActionForm1.vbとしました。

 

3.作成したクラスに以下のコードを記述します。

Public Class ActionForm1

    Public Property name As String

End Class

3行目は、Propertyです。
この変数に値の設定と取得が出来ます。

 

4.コントローラに以下のコードを追記します。

Imports System.Web.Mvc

Namespace Controllers
    Public Class Test1Controller
        Inherits Controller

		' GET: Test1
		Function Index() As ActionResult
			Return View()
		End Function

		Function TestModel() As ActionResult
			Dim a As New ActionForm1
			a.name = "こんにちは"
			Return View(a)
		End Function
	End Class
End Namespace

12行目は、FunctionのTestModel()を追加しています。
13行目は、ActionForm1クラスのインスタンスを生成しています。Newがあります。
14行目は、インスタンスの変数に値を設定しています。
15行目は、ビューに連携しています。引数にActionForm1のインスタンスがあります。

 

モデルと連携したビューを追加する

1.12行目のTestModelのあたりで右クリックし「ビューの追加」をクリックします。

 

2.テンプレートは「Empty」、モデルクラスは、作成した「ActionForm1」を指定し「追加」を押します。レイアウトページの使用のチェックは外しました。

 

3.以下は、生成されたビューです。
13行目に@Model.Nameを追加します。ファイル名は、TestModel.vbhtmlです。

@ModelType asp_test1.ActionForm1
@Code
    Layout = Nothing
End Code
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Name</title>
</head>
<body>
    <div>
        @Model.name
    </div>
</body>
</html>

1行目のActionForm1はクラス名です。ファイル名ではないので注意が必要です。
(ファイル名を変更してクラス名を変更していないとエラーになります)
13行目の@Modelは、1行目と紐づきます。

 

Web画面を確認

TestModel.vbhtmlを開いた状態で、画面上部にある「IIS Express(Google Chrome)」をクリックすると画面に”こんにちは”と表示されます。

URLは以下です。
https://localhost:44320/Test1/TestModel

関連の記事

(ASP.NETとVB.NET) POSTで値を別画面に渡す
ASP.NETとWindows10のIISでhello worldを表示する

△上に戻る