プロジェクトの構成
コントローラクラスファイルはフォルダControllersの下に配置する。
コントローラクラスの実装
コントローラクラスの動作- 配下のメソッドはアクションメソッドと呼ばれ、これがURLの一部となる。
URLは<コントローラ名>/<アクション名> - ビュー変数をViewDataオブジェクトのプロパティとして設定する
- ヘルパーメソッドで、ActionResultオブジェクトを返す
コントローラ、アクションをURLで指定
→ビュー変数を設定
→ヘルパーメソッドでActionResultクラスを継承したクラスのオブジェクトを返す
→返されたオブジェクトに含まれるメソッド(コンストラクタ?)で、ページを表示したり、リダイレクトしたりする。
ということか。
ヘルパーメソッドと、返された時の動作
- View:引数で指定された名前のビューで出力を生成
- Content:引数で指定されたテキストを出力
- File:引数で指定されたデータを出力
- Redirect:引数で指定されたURLにリダイレクト
- RedirectToAction:指定されたアクションにリダイレクト(コントローラ名も指定できる)
- HttpNotFound:「404 Not Found」を出力
本書ではC#で書いてあるが、自分が使うときはVB.NETで書く可能性が高いので、VB.NETに書き換える。
というよりも、プロジェクト作成時にVBを選択していたら、これは勝手に生成された。
Returnが使えると思っていなかったのは、VBAから抜け切れてないのか。
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index() As ActionResult
Return View()
End Function
Function About() As ActionResult
ViewData("Message") = "Your application description page."
Return View()
End Function
Function Contact() As ActionResult
ViewData("Message") = "Your contact page."
Return View()
End Function
End Class
例えば、URLがhttp://....../Home/Aboutだとしたら、HomeControllerのAboutメソッドが呼ばれる。文字列"Controller"は自動でオミットされるのかな?このメソッドの中で変数ViewDataに値を設定、Viewメソッドで「ViewData変数をあげるから、これを使って表示しなさい」という動作を指定している。で、ページを表示するときに、ビューはViewDataの各プロパティを、HTMLの中に埋め込んで、表示させるということですね。。
とりあえずこれで動かしてみた
ちなみに、このままデバッグ開始したら、Index()が呼ばれた様子。デフォルトではそうなんでしょうね。さらに、VS2013では、普通にプロジェクト作成したらMVC4のプロジェクトができます。なので、プロジェクト作成時に、ダイアログボックスの上の方から「.NET Framework4.5.1」を選択すること。そうするとMVC5のプロジェクトができる。備忘録。
0 件のコメント:
コメントを投稿