差分

ナビゲーションに移動 検索に移動

ASP.NET MVC/アクション

1,398 バイト追加, 2012年3月30日 (金) 06:33
[[ASP.NET MVC]]の'''アクション'''とは、フロントコントローラーから呼び出されるコントローラークラスのメソッドのことである。コントローラーのうち、プログラマーが記述する部分を指す。とは、[[フロントコントローラー]]から呼び出されるコントローラークラス(「[[Controller クラス (System.Web.Mvc)]]」の派生クラス)のメソッドのことで、ASP.NET MVCのコントローラーのうち、[[プログラマー]]が記述する部分をさす。 アクション(コントローラークラス内のメソッド)を記述するためのコントローラークラス自体は「[[Controller クラス (System.Web.Mvc)]]」を継承して作成する。<source lang="csharp"> using System.Web.Mvc;  // コントローラークラスの public class HomeController : Controller { // アクション(メソッド) public ActionResult Index() { return View(); } }</source>
== フォルダー構成 ==
[[ASP.NET MVCでは「Controllers」ディレクトリ以下にコントローラークラスを格納することになっている。MVC]]では、「Controllers」ディレクトリ以下にコントローラークラスを格納することになっている。 == 戻り値 ==[[ASP.NET MVC]]のアクションは必ず[[ActionResultクラス]]のインスタンスを返すことになっている。標準で用意されているActionResultから派生したクラスの種類などの、詳細は「[[ActionResult クラス (System.Web.Mvc)]]」を参照。
== MVC ==
MVCの原則に従えば、コントローラーはモデルとビューを繋ぐのが主目的なので、コントローラーアクションにはモデルからデータを取得し、適切なビューに橋渡しする処理のみを書く。たとえばPCとスマートフォンでビューを切り替えるなどのビジネスロジックでもHTMLの生成でもない連結器としての機能を書いておく。[[MVC]]の原則に従えば、[[コントローラー]]は[[モデル]]と[[ビュー]]を繋ぐのが主目的なので、コントローラーアクションにはモデルからデータを取得し、適切なビューに橋渡しする処理のみを書く。たとえば[[PC]]と[[スマートフォン]]でビューを切り替えるなどの[[ビジネスロジック]]でも[[HTML]]の生成でもない、あくまで連結器としての機能のみを[[コントローラークラス]]に書いておく。
ここにビジネスロジックを書いてはいけない。書けないわけではなく、「書くな」という決まり事であり、書けるし、書いた方が手っ取り早いが、サイトが肥大化したときにスパゲッティになるよねということらしい。コントローラーにビジネスロジックを書いてはいけない。書けないわけではなく、「書くな」という決まり事であり、書けるし、書いた方が手っ取り早いし、書いている人も多いが、サイトが肥大化したときに[[スパゲッティ]]になるよね、ということらしい。
=== 悪い例 ===
コントローラークラスのアクション(Indexメソッド)内にビジネスロジックを記述してある。HomeコントローラークラスのIndexアクション(Indexメソッド)内にビジネスロジックを記述してある。
<source lang="csharp">
// Controllers/HomeController.cs
}
</source>
 
=== 良い例 ===
モデルでデータを管理する。
<source lang="csharp">
// Models/HelloModel.cs
}
</source>
コントローラークラスのアクションは、モデルからデータを取得し、ビューに橋渡しをする。
<source lang="csharp">
// Controllers/HomeController.cs
}
</source>
 
== 関連項目 ==
* [[ActionResult クラス (System.Web.Mvc)]] - アクションの戻り値
* [[ASP.NET MVC]]
 
== 参考文献 ==
<references />
 
== 外部リンク ==
 
{{stub}}
匿名利用者

案内メニュー