「ASP.NET MVC/アクション」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
(ページの作成:「ASP.NET MVCの'''アクション'''とは、フロントコントローラーから呼び出されるコントローラークラスのメソッドのことである...」)
 
imported>Administrator
23行目: 23行目:
 
</source>
 
</source>
 
=== 良い例 ===
 
=== 良い例 ===
 +
モデルでデータを管理する。
 
<source lang="csharp">
 
<source lang="csharp">
 
// Models/HelloModel.cs
 
// Models/HelloModel.cs
33行目: 34行目:
 
     }
 
     }
 
</source>
 
</source>
 +
コントローラークラスのアクションは、モデルからデータを取得し、ビューに橋渡しをする。
 
<source lang="csharp">
 
<source lang="csharp">
 
// Controllers/HomeController.cs
 
// Controllers/HomeController.cs

2012年3月16日 (金) 01:49時点における版

ASP.NET MVCアクションとは、フロントコントローラーから呼び出されるコントローラークラスのメソッドのことである。コントローラーのうち、プログラマーが記述する部分を指す。

フォルダー構成

ASP.NET MVCでは「Controllers」ディレクトリ以下にコントローラークラスを格納することになっている。

MVC

MVCの原則に従えば、コントローラーはモデルとビューを繋ぐのが主目的なので、コントローラーアクションにはモデルからデータを取得し、適切なビューに橋渡しする処理のみを書く。たとえばPCとスマートフォンでビューを切り替えるなどのビジネスロジックでもHTMLの生成でもない連結器としての機能を書いておく。

ここにビジネスロジックを書いてはいけない。書けないわけではなく、「書くな」という決まり事であり、書けるし、書いた方が手っ取り早いが、サイトが肥大化したときにスパゲッティになるよねということらしい。

悪い例

コントローラークラスのアクション(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();
        }
    }