CWindow::OnVScroll

CWindow::OnVScrollで、垂直方向スクロールバーの制御をする。
Window.hで、

OnVScrollを追加。
Window.cppでは、DynamicWindowProcで、

WM_VSCROLLでOnVScrollを呼ぶようにして、OnVScrollは、

垂直方向スクロールバー処理。
MainWindow.cppでは、

OnCreateでスクロールバー初期化。

OnPaintでスクロールバーの位置を描画。
MainApplication.cppで、

m_pMainWnd->CreateのスタイルでWS_VSCROLLを追加。

最初はこうだが、スクロールバーを動かすと、
最初はこうだが、スクロールバーを動かすと、

最初はこうだが、スクロールバーを動かすと、

数値が変化する。
数値が変化する。

数値が変化する。

Test/winapi/CWindow/OnVScroll/src/CWindow at master · bg1bgst333/Test · GitHub

ViewDataDictionary.Item[]

View側でViewDataのアイテムを取り出して表示してみる。

ViewDataDictionary.Item[String] プロパティ (System.Web.Mvc) | Microsoft Docs

FirstController.csでViewData["msg"]に"ABCDE"をセットしていれば、
Index.aspxで、

こうすれば、

"ABCDE"が表示される
"ABCDE"が表示される

"ABCDE"が表示される。

Sample/aspnetmvc/ViewDataDictionary/Item/src/ViewDataDictionary_ at master · bg1bgst333/Sample · GitHub

ViewPage.ViewData

ViewPage.ViewDataは、View側からアクセスできるViewDataである。

ViewPage.ViewData プロパティ (System.Web.Mvc) | Microsoft Docs

Index.aspxで、

ViewData.ToStringを見てみる。

ViewPageのViewDataプロパティ
ViewPageのViewDataプロパティ

ViewPageのViewDataプロパティ。

型はViewDataDictionary
型はViewDataDictionary

型はViewDataDictionary。

Sample/aspnetmvc/ViewPage/ViewData/src/ViewPage_ at master · bg1bgst333/Sample · GitHub

ViewDataDictionary

ViewDataDictionaryに値をセットしてみよう。

ViewDataDictionary クラス (System.Web.Mvc) | Microsoft Docs

FirstController.csで、

"msg"をキーとして、"ABCDE"という値をセットする。

こんな感じでキーと値がセットされている
こんな感じでキーと値がセットされている

こんな感じでキーと値がセットされている。
でも、View側は何もしてないので真っ白なのは変わらない。

Sample/aspnetmvc/ViewDataDictionary/ViewDataDictionary/src/ViewDataDictionary_ at master · bg1bgst333/Sample · GitHub

ControllerBase.ViewData

ViewDataは、ControllerとViewの間で共有するデータを持つ。

ControllerBase.ViewData プロパティ (System.Web.Mvc) | Microsoft Docs

Controller側からは、ControllerBase.ViewDataでアクセスする。
FirstController.csで、

型を見てみる。

アクセスすると
アクセスすると

アクセスすると、

ViewDataDictionary
ViewDataDictionary

型はViewDataDictionary。

ControllerBaseのViewDataプロパティ
ControllerBaseのViewDataプロパティ

こいつ自身はControllerBaseのViewDataプロパティ。

Viewでは何もしてないので真っ白
Viewでは何もしてないので真っ白

Viewでは何もしてないので真っ白。

Sample/aspnetmvc/ControllerBase/ViewData/src/ControllerBase_ at master · bg1bgst333/Sample · GitHub

ViewPage

Controllerに対するViewを追加しないと、あのようなエラーになってしまう。
追加したViewはViewPageを基底クラスとしている。

ViewPage クラス (System.Web.Mvc) | Microsoft Docs

まずは、

FirstControllerを追加
FirstControllerを追加

FirstControllerを追加。
Viewの追加はちょっとこれまでにない操作で、

Indexメソッドにキャレットを合わせて、そこで右クリックするとAdd Viewが出てくるので、これをクリック。
Indexメソッドにキャレットを合わせて、そこで右クリックするとAdd Viewが出てくるので、これをクリック。

Indexメソッドにキャレットを合わせて、そこで右クリックするとAdd Viewが出てくるので、これをクリック。

チェックは全部外す
チェックは全部外す

チェックは全部外す。

FirstControllerのIndexアクションのビューはこうやって追加される
FirstControllerのIndexアクションのビューはこうやって追加される

FirstControllerのIndexアクションのビューはこうやって追加される。

このページのクラスと、基底クラスを出してみる。

基底クラスがViewPageになってる
基底クラスがViewPageになってる

基底クラスがViewPageになってる。

Sample/aspnetmvc/ViewPage/ViewPage/src/ViewPage_ at master · bg1bgst333/Sample · GitHub

Controller

ここからは、ASP.NET MVCに入っていく。

第1回 ASP.NET MVCフレームワーク 基本のキ:連載:ASP.NET MVC入門(2/5 ページ) - @IT

まずは、あるひとつのURLにアクセスしたときの処理を担当するControllerを追加する。

Controller クラス (System.Web.Mvc) | Microsoft Docs

ASP.NET MVC Web Applicationプロジェクト
ASP.NET MVC Web Applicationプロジェクト

ASP.NET MVC Web Applicationプロジェクト。

作成するとこんな感じ
作成するとこんな感じ

作成するとこんな感じ。

Controllerを追加
Controllerを追加

Controllerを追加。

名前はFirstControllerとしよう。下のチェックは入れない。
名前はFirstControllerとしよう。下のチェックは入れない。

名前はFirstControllerとしよう。下のチェックは入れない。

追加された。
追加された。

追加された。
中身は、

こう。

ここにブレークポイントしてビルド
ここにブレークポイントしてビルド

ここにブレークポイントしてビルド。
デバッグ実行しようとすると、

デバッグが無効なのか
デバッグが無効なのか

デバッグが無効なのか。
Web.configで、

  <system.web>

    <!-- 
            Set compilation debug="true" to insert debugging 
            symbols into the compiled page. Because this 
            affects performance, set this value to true only 
            during development.
    -->
    <compilation debug="false">
      <assemblies>

これを、

こうする。
実行すると、

こうなる。
こうなる。

こうなる。
これはHomeControllerのIndex。
FirstControllerは、

こうやってアクセスしに行く
こうやってアクセスしに行く

こうやってアクセスしに行く。

ここには来る
ここには来る

ここには来る。

しかしこういうエラーが表示される
しかしこういうエラーが表示される

しかしこういうエラーが表示される。

このURLだと存在しない
このURLだと存在しない

このURLだと存在しない。
さっきのブレークポイントにも来ない。

これだとこっちになる
これだとこっちになる

これだとこっちになる。

ここにも来る
ここにも来る

ここにも来る。

末尾に&#x27;/&#x27;を付けた場合も同じ
末尾に'/'を付けた場合も同じ

末尾に'/'を付けた場合も同じ。

Sample/aspnetmvc/Controller/Controller/src/Controller_ at master · bg1bgst333/Sample · GitHub