モデル-ビュー-コントローラ(MVC) 3つの主要コンポーネントにアーキテクチャパターンアプリケーション:モデル(M)、ビュー(V)と、コントローラ(C)。 MVCパターンは、従来の一体型のアプリケーションよりも、テストを簡単に作成し、更新アプリケーションに役立ちます。 MVCベースのアプリケーションが含まれます:
-
モデル(M)は:アプリケーションデータの種類を示します。 検証ロジックモデルクラスは、データへのビジネスルールを施行するために使用します。 典型的には、オブジェクトモデルの検索モデルと状態データベースに格納されています。 このチュートリアルでは、
Movie
データベースからのモデルは、動画データ、及びそれを表示したり、それを更新するための物資を取得します。 更新されたデータがデータベースに書き込まれます。 -
ビュー(V)は:のコンポーネント・アプリケーション・ユーザ・インターフェース(UI)を示す図です。 このUIは通常、モデルデータを表示されています。
-
コントローラ(C):治療クラスブラウザ要求。 彼らは、取得するために戻り、ビューデータモデルテンプレート応答を呼び出します。 ユーザ入力と対話するために、コントローラプロセスおよび応答、MVCアプリケーションビュー表示情報のみです。 例えば、コントローラは、データとクエリ文字列値のルーティングを処理し、モデルにこれらの値を渡します。 モデルは、データベースを照会するために、これらの値を使用することができます。 例えば、
https://localhost:5001/Home/Privacy
とのHome
データ(コントローラ)及びルーティングPrivacy
(ホームと呼ばれるコントローラ動作方法)。https://localhost:5001/Movies/Edit/5
これは、映画フィルム5のコントローラIDで編集するための要求です。 このチュートリアルの次のセクションは、ルーティングデータを記述する。
MVCパターンは、これらの要素間の疎結合を可能にしながら、異なるアプリケーションの特性(入力ロジック、ビジネス・ロジックとUIロジック)を分離するためのアプリケーションを作成するのに役立ちます。 このモードでは、各アプリケーションロジックの場所を指定することができます。 UIロジックはビューです。 コントローラ内に位置する入力ロジック。 ビジネス・モデルに配置されたロジック。 この分離は、コードの他の特性に影響を与えることなく、特性時間処理を実現するために使用することができるので、複雑なアプリケーションを構築する程度を制御するのに役立ちます。 例えば、ビューコード処理を依存することなく、ビジネス・ロジック・コード。
コントローラの追加
- Visual Studioの
-
「ソリューションエクスプローラ」で、「コントローラ」を右クリックし、「追加」>「コントローラ」をクリックしてください
-
「台座を追加」ダイアログボックスで、「MVCコントローラ - 空」を選択
-
「空のMVCコントローラの追加」ダイアログボックスで、HelloWorldControllerを入力し、「ADD」を選択します。
-
- Visual Studioのコード
「EXPLORER」のアイコン、[コントロールクリック(右クリック)、「コントローラ」を選択し、「新規ファイル」を選択し、新しいファイルHelloWorldController.csに名前を付けます。
- Mac用のVisual Studio
-
「ソリューションエクスプローラ」で、>「追加」を選択し、「コントローラ」を右クリックし、「新規ファイルを。」
「を選択ASP.NETコア」と「MVCコントローラクラスを。」
コントローラは、「HelloWorldController」と命名されます。
「コントローラ/ HelloWorldController.cs」の内容は、以下に置き換えられます。
使用してMicrosoft.AspNetCore.Mvcを。 使用してSystem.Text.Encodings.Webを。 名前空間のMvcMovie.Controllers { パブリック クラスHelloWorldController:コントローラ { // // GET:/ HelloWorldの/ パブリック文字列インデックス() { 返す 「...これは私のデフォルトのアクションです」。 } // // GET:/ HelloWorldの/ようこそ/ パブリック文字列へようこそ() { リターン 「これは歓迎アクションメソッドです... 」。 } } }
コントローラの各 public
メソッドは、HTTPエンドポイントコールとして使用することができます。 例では、上記では、両方の方法は、文字列を返します。 以前の各メソッドがコメントしていることに注意してください。
HTTPエンドポイントが(例えば、WebアプリケーションのURL配向されてもよいである https://localhost:5001/HelloWorld
、請求に関連して使用されるプロトコル) HTTPS
ネットワークロケーションWebサーバTCPポート localhost:5001
、及びターゲットURI HelloWorld
。
記事のコメントはこれがあることを指摘した HTTP GET ベースのURLに追加することで、メソッド /HelloWorld/
の呼び出し。 第二のアノテーションを指定し たHTTP GET のURLにそれを追加することによって、メソッドを /HelloWorld/Welcome/
コール。 このチュートリアルは、後にベースフレーム生成エンジン使用して HTTP POST
データを更新するための方法。
非デバッグモードで実行しているアプリケーション、およびアドレスバーにパスに追加「のHelloWorld」。 Index
メソッドは文字列を返します。
インバウンドのMVC URL呼制御クラス(および操作の方法)。 使用MVCのデフォルトとして ロジックは、ルーティングURLを呼び出すコードを決定するために、次の形式を使用します。
/[Controller]/[ActionName]/[Parameters]
Startup.csファイルに Configure
フォーマットルーティングプロセスを設定します。
app.UseEndpoints(エンドポイント=> { endpoints.MapControllerRoute( 名前:「デフォルト」、 パターン:" {コントローラ=ホーム} / {アクション=ランキング} / {ID}?" )。 });
あなたがアプリケーションを参照し、任意のURLのセクションを提供していない場合は、指定されたハイライトの上に「ホーム」コントローラおよび「インデックス」テンプレートラインにデフォルト設定されます。
最初のURLセグメントコントローラクラスを実行することを決めました。 だから、 localhost:{PORT}/HelloWorld
コントローラのHelloWorldクラスにマッピングされました。 URLタイプ判定部の第二部分の操作方法。 だから、 localhost:{PORT}/HelloWorld/Index
それが引き金となり HelloWorldController
、クラスの Index
操作を。 ただ参照するには、注意してください localhost:{PORT}/HelloWorld
ながら、 Index
この方法は、デフォルトで呼び出されます。 その理由は、ということです Index
明示的にメソッドの名前を指定しない場合、デフォルトの方法は、それがコントローラに呼び出します。 URLセグメントの3番目の部分は(id
)データをルーティングするためのものです。 このチュートリアルの次のセクションは、ルーティングデータを記述する。
閲覧するには https://localhost:{PORT}/HelloWorld/Welcome
。 Welcome
操作の方法とは、文字列を返します This is the Welcome action method...
。 このURLのために、使用して HelloWorld
コントローラと Welcome
操作の方法を。 現在未使用のURL [Parameters]
の部分。
コードは、コントローラからのURL情報にパラメータを変更します。 たとえば /HelloWorld/Welcome?name=Rick&numtimes=4
。 変更 Welcome
方法は次の2つのコードパラメータ表示が含まれています。
// GET:/ HelloWorldの/ようこそ/ //はSystem.Text.Encodings.Webを使用する必要があります。 公共の 文字列へようこそ(文字列名、int型 numTimes = 1 ) { リターン HtmlEncoder.Default.Encode($ " こんにちは{名前}、NumTimesは次のとおりです。{numTimes} " ); }
上記のコード:
- 機能指示を使用してC#のオプションのパラメータではない
numTimes
パラメータは、パラメータaのデフォルト値に渡されたとき。 - 使用する
HtmlEncoder.Default.Encode
悪質な入力(すなわちJavaScriptの)ダメージのアプリケーションを防ぐために。 - で
$"Hello {name}, NumTimes is: {numTimes}"
使用して文字列内の補間を。
アプリケーションを実行し、を参照します。
https://localhost:{PORT}/HelloWorld/Welcome?name=Rick&numtimes=4
(するために、 {PORT}
ポート番号に置き換え。)URLであると name
し、 numtimes
他の値。 MVCの モデルバインディングシステムは自動的にアドレスバーにクエリ文字列からパラメータメソッドパラメータの名前マッピングすることができます。 詳細については、を参照してください結合モデル。
図中、未使用セグメントURL( Parameters
)、およびクエリ文字列で渡さ name
および numTimes
パラメータ。 URLの上に ?
区切り文字として(疑問符)、クエリ文字列が続きます。 &
文字フィールド/値のペアを分離しました。
Welcome
次のコードでの方法:
公共の 文字列へようこそ(文字列名、int型 ID = 1 ) { リターン HtmlEncoder.Default.Encode($ " こんにちは{名前}、ID:{ID} " ); }
アプリケーションを実行し、以下のURLを入力します。https://localhost:{PORT}/HelloWorld/Welcome/3?name=Rick
このとき、第3のセグメントのURLルーティングパラメータが id
一致します。 Welcome
方法としては、 MapControllerRoute
メソッドのURLテンプレートに一致するパラメータを id
。 その後、 ?
(id?
)を表す id
オプションのパラメータを。
app.UseEndpoints(エンドポイント=> { endpoints.MapControllerRoute( 名前:「デフォルト」、 パターン:" {コントローラ=ホーム} / {アクション=ランキング} / {ID}?" )。 });
上記の例では、MVCコントローラの実装では、常に「VC」セクション、すなわち、ビューおよびコントローラの仕事です。 コントローラは、HTMLに直接戻ります。 通常、私は非常に面倒なコーディングとメンテナンスので、HTMLを返すようにコントローラに指示する必要はありません。 一般的に、反応してHTMLテンプレートファイルを生成するために、別のかみそりビューを使用する必要があります。 この操作は、次のチュートリアルで行うことができます。
その他のチュートリアル:
ASP.NET MVCのコアアプリケーションにビューを追加
ASP.NET MVCのコアアプリケーションにモデルを追加