「ASP.NET MVC/アクション」の版間の差分
imported>Administrator |
imported>Administrator (→MVC) |
||
(同じ利用者による、間の3版が非表示) | |||
20行目: | 20行目: | ||
== 戻り値 == | == 戻り値 == | ||
− | ASP.NET | + | [[ASP.NET MVC]]のアクションは必ず[[ActionResultクラス]]のインスタンスを返すことになっている。 |
− | + | 標準で用意されているActionResultから派生したクラスの種類などの、詳細は「[[ActionResult クラス (System.Web.Mvc)]]」を参照。 | |
== MVC == | == MVC == | ||
− | + | [[MVC]]の原則に従えば、[[コントローラー]]は[[モデル]]と[[ビュー]]を繋ぐのが主目的なので、コントローラーアクションにはモデルからデータを取得し、適切なビューに橋渡しする処理のみを書く。たとえば[[PC]]と[[スマートフォン]]でビューを切り替えるなどの[[ビジネスロジック]]でも[[HTML]]の生成でもない、あくまで連結器としての機能のみを[[コントローラークラス]]に書いておく。 | |
− | + | コントローラーにビジネスロジックを書いてはいけない。書けないわけではなく、「書くな」という決まり事であり、書けるし、書いた方が手っ取り早いし、書いている人も多いが、サイトが肥大化したときに[[スパゲッティ]]になるよね、ということらしい。 | |
=== 悪い例 === | === 悪い例 === |
2012年3月30日 (金) 06:33時点における最新版
ASP.NET MVCのアクションとは、フロントコントローラーから呼び出されるコントローラークラス(「Controller クラス (System.Web.Mvc)」の派生クラス)のメソッドのことで、ASP.NET MVCのコントローラーのうち、プログラマーが記述する部分をさす。
アクション(コントローラークラス内のメソッド)を記述するためのコントローラークラス自体は「Controller クラス (System.Web.Mvc)」を継承して作成する。
using System.Web.Mvc;
// コントローラークラスの
public class HomeController : Controller
{
// アクション(メソッド)
public ActionResult Index()
{
return View();
}
}
フォルダー構成[編集 | ソースを編集]
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
参考文献[編集 | ソースを編集]