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