ASP.NETコアMVCコントローラは結果をフォーマットビュー戻るを使用することができます。
1.ビューとは何ですか
MVCでは、ビューは、ユーザーがプレゼンテーションの詳細と相互作用してカプセル化します。クライアントに送信されたコンテンツを生成するための図である、HTMLテンプレートは、埋め込まれたコードが含まれています。最小限のコードの複雑さを可能にするか、HTMLと対話構文を使用かみそりビュー。
ビュー.cshtmlファイルへのASP.NET MVCのコアビューファイルのデフォルトは内部のアプリケーションのフォルダに保存されます。典型的には、各コントローラは、コントローラが動作の対応する方法を含み、それ自身のフォルダを有しています。
操作のビュー、レイアウト図の部分図に対応し、そして他の特定のファイルが複製を減少させるために使用することができ、ビューで繰り返し使用が可能になります。
アプリケーション内の分離ビューのMVCの関心を提供する、ユーザインターフェースおよびビジネスロジックレベルマークが別々にパッケージ。一般的に、<レイアウト>レイアウトビューまたは<部分>ユーザインタフェースのレイアウトに対応する命令を共有することによって再利用。
2.ビューを作成します。
ビューは、フォルダ内のビュー/ [コントローラ名]ファイルで作成されたコントローラに属しています。コントローラ間で共通のビュー/ビュー/共有フォルダに配置されています。同じ名前の操作に関連付けられたビューコントローラに名前を付け、そして.cshtml拡張を追加します。例えば、コントローラの操作についてホームビューを作成するには、About.cshtmlファイルに/ビュー/ホームフォルダを作成する必要があり、または操作ビューのAddメソッドを右クリックします。
@ { ViewDataを[ "タイトル"] = "について"。 } < H2 > @ViewData [ "タイトル"] </ H2 > < H3 > @ViewData [ "メッセージ"] </ H3 > < P >追加情報を提供するために、この領域を使用。</ P >
@記号は、カミソリのコードを表します。<H3>に示すようかみそり値に包まれたC#の構文{}カミソリの操作コードブロックは、上記のように、<H2>要素の内部に、HTMLに表示する@記号を使用して操作することができます。
このビューは、その責任の出力のこの部分を気に。ページレイアウトの部分だけでなく、他の場所で指定されたビュー、共通のルックアンドフィール、。
前記コントローラは、ビューを指定します
ビューは、典型的にするViewResultとしての動作から返されます。操作は直接作成とするViewResultを返しますが、コントローラは、コントローラから継承する場合、一般的に、あなたは、単にビューヘルパーメソッドを使用することができますすることができます。
公衆についてIActionResult() { ViewDataを[ " メッセージ" ] = " あなたのアプリケーションの説明ページ。" ; 返すビューを(); }
そのビューに戻るようにこの方法は、過負荷補助ビューを複数有しています。必要に応じてリターン・ビューを指定することができ、ビューは、モデルオブジェクトに返されることがあります。
操作は、ビューに戻ると、ビューが発見と呼ばれるプロセスを発生します。このプロセスは、ファイルを表示するかを決定します。あなたが特定のビューファイルを指定しない限り、そうでない場合は、対応するビューコントローラは、最初の実行時に検索し、共有フォルダ内のビューの試合の名前を見つけます。
操作は、リターンビュー()のような表示方法を返す場合、この動作は、ビュー名の名前として使用されています。この方法は、また、ベッドの名リターンビュー(「SomeView」)のクリアな視界を与えることができます;. どちらの場合も、ビューコントローラは、対応するフォルダとファイルの検索共有フォルダの試合でファイルを表示します。
ビュー(「ビュー/ホーム/ About.cshtml」)を返し、この場合には、.cshtml拡張子がファイルパスの一部として指定する必要があり、ファイルのビューへのパスを提供することができます。
4.データビューに転送します
ASP.NETコアMVCビューにデータを渡すために様々な機構を使用することができます。最も強力な方法は、(一般的モデルビューと呼ばれるビジネスモデルのタイプを区別するために)ビュー内のモデルタイプを指定するために、次に表示するために、操作のこのタイプの例から送信されます。推奨モデルやビューモデルは、ビューにデータを渡します。これは、強力な型チェックビューの使用を可能にし、viewコマンドは@modelモデルを指定するために使用することができます。
@model MVCTest.Models.Operation @ { ViewDataを[ "タイトル"] = "作成"。 } < H2 >作成</ H2 > < H4 >動作</ H4 > < 時間/> < DIV クラス= "行" > < DIV クラス= "COL-MD-4" > < フォームASP-アクションは= "作成します" > < divのASP-検証サマリー= "ModelOnly" クラス= "テキスト-危険" > クラス= "フォームグループ" > < ラベルASP-ため= "ID" クラス= "コントロールラベル" > </ ラベル> < 入力ASP-ため= "ID" クラス= "フォームコントロール" /> < スパンASP -validation-用= "ID" クラス= "テキスト-危険" > </ スパン> </ divの> < divのクラス= "フォームグループ" > < ラベルASP-用= "名前" クラス=」コントロールラベル」 > </ ラベル> <入力ASP-用= "名前" クラス= "フォームコントロール" /> < スパンASP-検証-用= "名前" クラス= "テキスト-危険" > </ スパン> </ divの> < divのクラス= "フォーム-group」> < 入力タイプ= "提出" 値= "作成" クラス= "BTN BTN-デフォルト" /> </ DIV > </ 形成> </ DIV > </ DIV > < DIV > <ASP-アクション= "インデックス" >リストに戻る</ A > </ DIV >
ビューに指定されたモデルたら、表示するために送ら強く型付けされたアクセス@Modelインスタンスで使用することができます。ラベルアシスタントの上(Model.Name @)を使用します。コントローラは、ビューの例を提供します。
公共のActionResultは()を作成 { VARのモデル= 新たな動作() { イド = 1 、 名前 = " テスト" }。 返すビュー(モデル)。 }
タイプ用アプリケーションパッケージを位置決めするためにモデル、ほとんどまたは全く作用を有するビューモデル推奨伝送、他のビジネスロジックなどのビューを制限するように設けることができません。
1.弱い型指定のデータ
強く型付けされたビューに加えて、すべてのビューが弱いタイプのデータセットにアクセスすることができます。このセットは、コントローラとビューにViewDataをまたはViewBag特性によって参照されてもよいです。ViewBagは、セットの動的なビューを提供ラッパーが、それは別のコレクションではないのViewDataに属します。
ViewDataをキーは、オブジェクトを格納および取得することができ、文字列の辞書オブジェクトによってアクセスされます。オブジェクトが抽出されると、それらは特定の型に変換する必要があります。ViewDataを、ビュー、コントローラからデータを転送するために使用され、中図(部分図とレイアウト)に送信することができます。文字列は、変換を格納されていない直接使用することができます。
公衆についてIActionResult() { VARのモデル= 新たな動作() { イド = 1 、 名前 = " テスト" }。 ViewDataを[ " 操作" ] = モデル。 ViewDataを[ " メッセージ" ] = " あなたのアプリケーションの説明ページ。" ; 返すビューを(); }
ビュー:
@ { ViewDataを[ "タイトル"] = "について"。 //需要转化 するvar運転操作など= ViewDataを[ "操作"]; } < H2 > @ViewData [ "タイトル"] </ H2 > < H3 > @ViewData [ "メッセージ"] </ H3 > < H3 > operation.Id @ </ H3 > < H3 > operation.Name @ </ H3 > < P >の追加情報を提供するために、この領域を使用します。</ P >
ViewBagオブジェクトはViewDataをに格納されたオブジェクトへの動的アクセスを提供するので、変換なしため使用することがより便利であることができます。
@ { ViewDataを[ "タイトル"] = "について"。 } < H2 > @ViewData [ "タイトル"] </ H2 > < H3 > @ViewData [ "メッセージ"] </ H3 > < H3 > ViewBag.Operation.Id @ </ H3 > < H3 > ViewBag.Operation @。名前</ H3 > < P >の追加情報を提供するために、この領域を使用します。</ P >
便利なので、もし同じ基本ViewDataを設定両方ポイントので、読むことができ、一度に値を書き込み、ViewBag ViewDataを間に混合することができます。
2.ダイナミックビュー
タイプ宣言、しかし、彼らにモデルのインスタンスを送信する観点から、動的に、この例に参照することができません。しかし、コンパイラは、任意の保護やインテリセンスを提供していません。プロパティが存在しない場合は、ページが実行時に失敗します。
より多くの特性図
タグのアシスタントは、簡単にカスタムコードのやビューヘルパーのコードでの使用を避け、HTMLタグの既存のサーバー側の動作に追加することができます。
カスタムHTMLタグを生成することは達成HTMLヘルパーの数を使用して構築することができ、より複雑なUIロジックは、(データは独自の要件を有していてもよい)で組立図(ビューコンポーネント)を封入してもよいです。ビュー・コンポーネントは、同じフォーカスコントローラに設けられたビューを提供し、共通UI要素を使用して、データ処理操作とビューの必要性を排除することができます。
このページに表示するサポート依存性注入、許可サービスは、ビューに注入。(これは後述します)