コントローラーの追加 (C#)

作成者 : Rick Anderson

Note

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

このチュートリアルでは、Microsoft Visual Studio の無料バージョンである Microsoft Visual Web Developer 2010 Express Service Pack 1 を使用して、ASP.NET MVC Web アプリケーションを構築する基本について説明します。 開始する前に、以下に示す前提条件がインストールされていることを確認してください。 これらのすべてをインストールするには、 Web プラットフォーム インストーラーのリンクをクリックします。 または、次のリンクを使用して、前提条件を個別にインストールすることもできます。

Visual Web Developer 2010 ではなく Visual Studio 2010 を使用している場合は、Visual Studio 2010 の前提条件のリンクをクリックして前提条件をインストールします。

このトピックでは、C# ソース コードを含む Visual Web Developer プロジェクトを使用できます。 C# バージョンをダウンロードします。 Visual Basic を使用する場合は、このチュートリアルの Visual Basic バージョン に切り替えます。

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

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

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

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

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

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

AddHelloWorldController

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

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

ブロック内に public class HelloWorldController 、次のコードのような 2 つのメソッドを作成します。 コントローラーは HTML の文字列を例として返します。

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..."; 
        } 
    } 
}

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

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

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

/[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 に違う値を指定してみてください。 名前付きパラメーターは、アドレス バーのクエリ文字列からメソッド内のパラメーターに自動的にマップされます。

ブラウザーを示すスクリーンショット。Hello Scott Num Times は、ウィンドウ内のテキストである 4 です。

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