「ASP.NET MVC/アクション」の版間の差分
imported>Administrator |
imported>Administrator |
||
| (同じ利用者による、間の11版が非表示) | |||
| 1行目: | 1行目: | ||
[[ASP.NET MVC]]の'''アクション''' | [[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 | [[ASP.NET MVC]]では、「Controllers」ディレクトリ以下にコントローラークラスを格納することになっている。 | ||
== 戻り値 == | |||
[[ASP.NET MVC]]のアクションは必ず[[ActionResultクラス]]のインスタンスを返すことになっている。 | |||
標準で用意されているActionResultから派生したクラスの種類などの、詳細は「[[ActionResult クラス (System.Web.Mvc)]]」を参照。 | |||
== MVC == | == MVC == | ||
[[MVC]]の原則に従えば、[[コントローラー]]は[[モデル]]と[[ビュー]]を繋ぐのが主目的なので、コントローラーアクションにはモデルからデータを取得し、適切なビューに橋渡しする処理のみを書く。たとえば[[PC]]と[[スマートフォン]]でビューを切り替えるなどの[[ビジネスロジック]]でも[[HTML]]の生成でもない、あくまで連結器としての機能のみを[[コントローラークラス]]に書いておく。 | |||
コントローラーにビジネスロジックを書いてはいけない。書けないわけではなく、「書くな」という決まり事であり、書けるし、書いた方が手っ取り早いし、書いている人も多いが、サイトが肥大化したときに[[スパゲッティ]]になるよね、ということらしい。 | |||
=== 悪い例 === | === 悪い例 === | ||
HomeコントローラークラスのIndexアクション(Indexメソッド)内にビジネスロジックを記述してある。 | |||
<source lang="csharp"> | <source lang="csharp"> | ||
// Controllers/HomeController.cs | // Controllers/HomeController.cs | ||
| 22行目: | 41行目: | ||
} | } | ||
</source> | </source> | ||
=== 良い例 === | === 良い例 === | ||
モデルでデータを管理する。 | モデルでデータを管理する。 | ||
| 48行目: | 68行目: | ||
== 関連項目 == | == 関連項目 == | ||
* [[ActionResult クラス (System.Web.Mvc)]] - アクションの戻り値 | |||
* [[ASP.NET MVC]] | * [[ASP.NET MVC]] | ||