コントローラーの追加 (2012)

作成者 : Rick Anderson

Note

このチュートリアルの更新版は、MVC 5 とVisual Studio 2013 ASP.NET 使用するこちらにあります。 より安全で、従う方がはるかに簡単で、より多くの機能を示します。

MVC は model-view-controller を表します。 MVC は、適切に設計され、テスト可能で保守が容易なアプリケーションを開発するためのパターンです。 MVC ベースのアプリケーションには、次のものが含まれます。

  • M odels: アプリケーションのデータを表し、検証ロジックを使用してそのデータにビジネス ルールを適用するクラス。
  • V iews: アプリケーションが HTML 応答を動的に生成するために使用するテンプレート ファイル。
  • C ontrollers: 受信したブラウザー要求を処理し、モデル データを取得し、ブラウザーへの応答を返すビュー テンプレートを指定するクラス。

このチュートリアル シリーズでは、これらすべての概念について説明し、それらを使用してアプリケーションを構築する方法について説明します。

まず、コントローラー クラスを作成します。 ソリューション エクスプローラーで、[コントローラー] フォルダーを右クリックし、[コントローラーの追加] を選択します。

ソリューション エクスプローラー ウィンドウを示すスクリーンショット。[コントローラー] 右クリック メニューで [追加] が選択され、サブメニューで [コントローラー] が選択されています。

新しいコントローラーに "HelloWorldController" という名前を付けます。 既定のテンプレートは 空の MVC コントローラー のままにして、[ 追加] をクリックします。

コントローラーの追加

ソリューション エクスプローラー、HelloWorldController.cs という名前の新しいファイルが作成されていることに注意してください。 ファイルは IDE で開いています。

Hello World コントローラーのドット cs タブを示すスクリーンショット。Hello Worldコントローラーのドット c s が[ソリューション エクスプローラー] ウィンドウの [コントローラー] フォルダーで選択されています。

このファイルの内容を次のコードに置き換えます。

using System.Web;
using System.Web.Mvc; 
 
namespace MvcMovie.Controllers 
{ 
    public class HelloWorldController : Controller 
    { 
        // 
        // GET: /HelloWorld/ 
 
        public string Index() 
        { 
            return "This is my <b>default</b> action..."; 
        } 
 
        // 
        // GET: /HelloWorld/Welcome/ 
 
        public string Welcome() 
        { 
            return "This is the Welcome action method..."; 
        } 
    } 
}

コントローラー メソッドは、例として HTML の文字列を返します。 コントローラーには という名前が付けられ HelloWorldController 、上記の最初のメソッドの名前 Indexは です。 ブラウザーから呼び出してみましょう。 アプリケーションを実行します (F5 キーまたは Ctrl + F5 キーを押します)。 ブラウザーで、アドレス バーのパスに "HelloWorld" を追加します。 (たとえば、次の図では です http://localhost:1234/HelloWorld.)。ブラウザーのページは、次のスクリーンショットのようになります。 上記のメソッドでは、コードは文字列を直接返しました。 あなたはシステムにHTMLを返すように言いましたが、それはそうしました!

テキストが表示されたブラウザーを示すスクリーンショット これは、ウィンドウ内の既定のアクションです。

ASP.NET MVC は、受信 URL に応じて異なるコントローラー クラス (およびその中の異なるアクション メソッド) を呼び出します。 ASP.NET MVC によって使用される既定の URL ルーティング ロジックは、次のような形式を使用して、呼び出すコードを決定します。

/[Controller]/[ActionName]/[Parameters]

URL の最初の部分によって、実行するコントローラー クラスが決まります。 そのため 、/HelloWorld は クラスにマップされます HelloWorldController 。 URL の 2 番目の部分は、実行するクラスのアクション メソッドを決定します。 そのため、/HelloWorld/Index により、 クラスの メソッドがHelloWorldController実行されますIndex/HelloWorld を参照するだけで済み、 メソッドがIndex既定で使用されていることに注意してください。 これは、 という名前 Index のメソッドがコントローラーで明示的に指定されていない場合に呼び出される既定のメソッドであるためです。

http://localhost:xxxx/HelloWorld/Welcome を参照します。 Welcome メソッドが実行され、"This is the Welcome action method..." という文字列を返します。 既定の MVC マッピングは です /[Controller]/[ActionName]/[Parameters]。 この URL では、コントローラーは HelloWorld で、Welcome がアクション メソッドです。 URL の [Parameters] の部分はまだ使っていません。

テキストが表示されたブラウザーを示すスクリーンショット これは、ウィンドウ内の Welcome アクション メソッドです。

URL からコントローラーにパラメーター情報を渡すことができるように、例を少し変更してみましょう ( 例: /HelloWorld/Welcome?name=Scott&numtimes=4)。 次に示すように、メソッドを Welcome 変更して 2 つのパラメーターを含めます。 コードでは、C# optional-parameter 機能を使用して、そのパラメーターに値が numTimes 渡されない場合、パラメーターの既定値が 1 であることを示します。

public string Welcome(string name, int numTimes = 1) {
     return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);
}

アプリケーションを実行し、URL の例 (http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4). URL の namenumtimes に違う値を指定してみてください。 ASP.NET MVC モデル バインド システムは、アドレス バーのクエリ文字列からメソッド内のパラメーターに名前付きパラメーターを自動的にマップします。

ウィンドウに Hello Scott Num Times が 4 というテキストが表示されたブラウザーを示すスクリーンショット。

これらの両方の例では、コントローラーは MVC の "VC" 部分 (ビューとコントローラーの動作) を実行しています。 コントローラーは HTML を直接返しています。 通常、HTML を直接返すコントローラーは必要ありません。これは、コーディングが非常に面倒になるためです。 代わりに、通常、HTML 応答の生成に役立つ別のビュー テンプレート ファイルを使用します。 次に、これを行う方法を見てみましょう。