[VB.NET] REST API⑨ Web APIからGETして一覧表示#2(Viewの追加と実行)

2021年10月7日

前回はビュー用のコントローラー(ViewTestController )を追加しました。
今回はいよいよビューを追加して、「ビューからリクエスト」 > 「APIで処理」 > 「ビューでリスト表示」までを実行します。


ビュー(View)を追加

ビューを配置する フォルダー を用意します。
ソリューションエクスプローラで、「Views」フォルダーを右クリックして表示されるメニューから、
「追加」>「新しいフォルダー」を選択します。

画像に alt 属性が指定されていません。ファイル名: 05-7-1024x558.png

作成したフォルダーの名前は「ViewTest」にします。

画像に alt 属性が指定されていません。ファイル名: 06-3-1024x558.png

ビューを追加します。
ソリューションエクスプローラで、作成したばかりの「ViewTest」フォルダーを右クリックして
表示されるメニューから、「追加」>「ビュー」を選択します。

画像に alt 属性が指定されていません。ファイル名: 07-4-1024x558.png

「MVC」>「表示」>「MVC5ビュー」を選択し、「追加」をクリックします。

画像に alt 属性が指定されていません。ファイル名: 08-2-1024x708.png

ビュー名は「index」とし、テンプレートは「List」を選択します。
モデルクラスは「Record」を選択して、「追加」をクリックしてください。
※ 「Record」はこちらで追加したモデルクラスです。

画像に alt 属性が指定されていません。ファイル名: 09-2.png

「ViewTest」フォルダーに「index」という名前のビューが追加されます。
これで、「ViewTest/index」というビューと、それを処理する「ViewTestController」というコントローラーが用意できました。

以下のようなコードが書かれています。

@ModelType がRecordの列挙型になっています。
リスト表示(Table)のタイトルやレコード表示に、モデルクラス(Record)が使われています。
Createボタンもありますが、今回は使わないので気にしないでください。
@*~*@でEdit、Details、Deleteのボタンがコメントになっていますが、これらも今回は使用しないのでそのままでOKです。

@ModelType IEnumerable(Of WebApplication1.Record)
@Code
ViewData("Title") = "index"
End Code

<h2>index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(Function(model) model.col1)
        </th>
        <th>
            @Html.DisplayNameFor(Function(model) model.col2)
        </th>
        <th>
            @Html.DisplayNameFor(Function(model) model.col3)
        </th>
        <th></th>
    </tr>

@For Each item In Model
    @<tr>
        <td>
            @Html.DisplayFor(Function(modelItem) item.col1)
        </td>
        <td>
            @Html.DisplayFor(Function(modelItem) item.col2)
        </td>
        <td>
            @Html.DisplayFor(Function(modelItem) item.col3)
        </td>
        <td>
            @*@Html.ActionLink("Edit", "Edit", New With {.id = item.PrimaryKey}) |
            @Html.ActionLink("Details", "Details", New With {.id = item.PrimaryKey}) |
            @Html.ActionLink("Delete", "Delete", New With {.id = item.PrimaryKey})*@
        </td>
    </tr>
Next

</table>

実行して確認する

さっそく実行してみましょう。
実行方法はこちらを参照してください。

もし、「実行したらAPIのメニュー画面が開いた」という場合は、
アドレスバーに「/ViewTest/index」と入力してEnterキーを押してページを移動してみてください。

一覧画面が開き、APIから取得したレコード(2行)が表示されます

APIを実際に呼び出すための画面を追加してみました。
最初は空テンプレートでビューを作ったのですが、
「Razor(レイザー)」という書き方がまだよくわからず、結局用意されているテンプレートを使ってみました。