[ASP.NET MVC マーベリックス ロード]12
[ASP.NET
MVC Mavericks Road] 12 - セクション、部分ビュー、および子アクション
要約すると、ビューのコンテンツは静的部分と動的部分に分けることができます。静的コンテンツは通常 HTML 要素ですが、動的コンテンツはアプリケーションの実行中に動的に作成されるコンテンツを指します。動的コンテンツを View に追加する方法は次のように要約できます:
インライン コード、if ステートメントや foreach ステートメントなどの小さなコード スニペット。
HTML ヘルパー メソッド。ビュー モデル、ViewBag などの単一または複数の HTML 要素を生成するために使用されます。
セクション、作成したコンテンツの一部を指定した場所に挿入します。
部分ビュー。別のビュー ファイルに存在し、サブコンテンツとして複数のビュー間で共有できます。
子アクションは、ビジネス ロジックを含む UI コンポーネントに相当します。子アクションが使用される場合、コントローラ内のアクションを呼び出してビューを返し、結果を出力ストリームに挿入します。
この分類は絶対的なものではありません。最初の 2 つは非常に単純で、以前の記事でも使用されています。この記事では主に後者の 3 つの方法の応用例を紹介します。
目次
セクション
Razor ビュー エンジンは、必要に応じて再利用できるように、ビュー内のコンテンツの一部の分離をサポートし、コードの冗長性を削減します。セクションの使用方法を説明しましょう。
MVC アプリケーションを作成し、基本テンプレートを選択します。 HomeController を追加し、生成された Index メソッドを次のように編集します。
public ActionResult Index() { string[] names = { "Apple", "Orange", "Pear" }; return View(names); }
Index メソッドを右クリックし、ビューを追加し、ビューを次のように編集します。
@model string[] @{ ViewBag.Title = "Index"; } @section Header { <div class="view"> @foreach (string str in new [] {"Home", "List", "Edit"}) { @Html.ActionLink(str, str, null, new { style = "margin: 5px" }) } </div> } <div class="view"> This is a list of fruit names: @foreach (string name in Model) { <span><b>@name</b></span> } </div>@section Footer { <div class="view"> This is the footer </div> }
@section タグとセクションの名前を追加してセクションを定義します。ここでは、ヘッダーとフッターという 2 つのセクションが作成され、読みやすくするためにビュー ファイルの先頭または末尾にセクションが配置されます。以下では、/Views/Shared/_Layout.cshtml ファイルでそれらを使用します。
/Views/Shared/_Layout.cshtml ファイルを次のように編集します。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <style type="text/css"> div.layout { background-color: lightgray;} div.view { border: thin solid black; margin: 10px 0;} </style> <title>@ViewBag.Title</title> </head> <body> @RenderSection("Header") <div class="layout"> This is part of the layout </div> @RenderBody() <div class="layout"> This is part of the layout </div> @RenderSection("Footer") <div class="layout"> This is part of the layout </div> </body> </html>
@RenderSection メソッドを通じてセクションのコンテンツを呼び出し、パラメーターでセクションの名前を指定します。プログラムを実行すると、次の結果が表示されます。
セクションは、現在のビューまたはそのレイアウトでのみ呼び出すことができることに注意してください。 @RenderSection メソッドは、パラメーターで指定されたセクションが見つからない場合に例外をスローします。セクションが存在するかどうか不明な場合は、次のように 2 番目のパラメーターの値を false に指定する必要があります。 IsSectionDefined メソッドを使用して、セクションが定義されているかどうかを確認することもできます。または、次のように現在のビューで呼び出すこともできます。別のビュー ファイルを作成して、別の場所で再利用できるようにします。次に部分表示の使い方を紹介します。
まず部分ビューを作成しましょう。 /Views/Shared ディレクトリに MyPartial という名前の新しいビュー ファイルを作成し、次のように「部分ビューとして作成」にチェックを入れます:
追加された部分ビュー ファイルは空のファイルです。このファイルに追加します。次のコード:
... @RenderSection("scripts", false) ...
この MyPartial.cshtml ビューは、ホームページに戻るリンクを作成します。もちろん、ここでの @Html.ActionLink メソッドは、View コンテンツを動的にロードする (Html ヘルパー) 方法でもあります。
次に、次のように HomeController に List アクション メソッドを追加します。
... @if (IsSectionDefined("Footer")) { @RenderSection("Footer") } else { <h4 id="This-nbsp-is-nbsp-the-nbsp-default-nbsp-footer">This is the default footer</h4> } ...
<div> This is the message from the partial view. @Html.ActionLink("This is a link to the Index action", "Index") </div>
プログラムを実行し、/Home/List に移動すると、次の効果が確認できます:
部分ビューと通常のビューの使用に違いはありません。渡すなどの強力なタイプを使用することもできます。 MyPartial.cshtml モデルの @ は、モデルのタイプを指定します:
public ActionResult List() { return View(); }
そして、MyPartial.cshtml ビューを呼び出すメイン ビュー List.cshtml を次のように変更します:
@{ ViewBag.Title = "List"; Layout = null; } <h3 id="This-nbsp-is-nbsp-the-nbsp-Views-Home-List-cshtml-nbsp-View">This is the /Views/Home/List.cshtml View</h3> @Html.Partial("MyPartial")
上記との違いは、ここでは 2 番目のパラメーターを指定していることです。 @Html.Partial (配列) MyPartial.cshtml に渡されるモデル オブジェクト。操作効果は以下の通りです:
Child Action
Child action 和 Patial view 类似,也是在应用程序的不同地方可以重复利用相同的子内容。不同的是,它是通过调用 controller 中的 action 方法来呈现子内容的,并且一般包含了业务的处理。任何 action 都可以作为子 action 。接下来介绍如何使用它。
在 HomeController 中添加一个 action,如下:
[ChildActionOnly] public ActionResult Time() { return PartialView(DateTime.Now); }
这个 action 通过调用 PartialView 方法来返回一个 partial view。ChildActionOnly 特性保证了该 action 只能作为子action被调用(不是必须的)。
接着我们继续为这个action添加一个相应的 Time.cshtml 视图,代码如下:
@model DateTime <p>The time is: @Model.ToShortTimeString()</p>
... @Html.Action("Time")
运行结果如下:
我们通过 @Html.Action 方法来调用了 Time action 方法来呈现子内容。在这个方法中我们只传了一个action名称参数,MVC将根据当前View所在Controller去查找这个action。如果是调用其它 controller 中的 action 方法,则需要在第二个参数中指定 controller 的名称,如下:
... @Html.Action("Time", "MyController")
该方法也可以给 action 方法的参数传值,如对于下面带有参数的 action:
... [ChildActionOnly] public ActionResult Time(DateTime time) { return PartialView(time); }
... @Html.Action("Time", new { time = DateTime.Now })
以上就是[ASP.NET MVC 小牛之路]12 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









はじめに 今日の急速に進化するデジタル世界では、堅牢かつ柔軟で保守可能な WEB アプリケーションを構築することが重要です。 PHPmvc アーキテクチャは、この目標を達成するための理想的なソリューションを提供します。 MVC (Model-View-Controller) は、アプリケーションのさまざまな側面を独立したコンポーネントに分離する、広く使用されている設計パターンです。 MVC アーキテクチャの基礎 MVC アーキテクチャの核となる原則は、関心事の分離です。 モデル: アプリケーションのデータとビジネス ロジックをカプセル化します。ビュー: データの表示とユーザー インタラクションの処理を担当します。コントローラー: モデルとビュー間の対話を調整し、ユーザーのリクエストとビジネス ロジックを管理します。 PHPMVC アーキテクチャ phpMVC アーキテクチャは従来の MVC パターンに従いますが、言語固有の機能も導入しています。以下はPHPMVCです

MVC アーキテクチャ (モデル-ビュー-コントローラー) は、コードを編成し、WEB アプリケーションの開発を簡素化するための明確な構造を提供するため、PHP 開発で最も一般的なパターンの 1 つです。基本的な MVC 原則はほとんどの Web アプリケーションには十分ですが、複雑なデータを処理したり高度な機能を実装する必要があるアプリケーションにはいくつかの制限があります。モデル層の分離 モデル層の分離は、高度な MVC アーキテクチャでは一般的な手法です。これには、モデル クラスを小さなサブクラスに分割し、それぞれが特定の機能に焦点を当てることが含まれます。たとえば、電子商取引アプリケーションの場合、メイン モデル クラスを注文モデル、製品モデル、顧客モデルに分割できます。この分離により、コードの保守性と再利用性が向上します。依存関係注入を使用する

MVC (Model-View-Controller) パターンは、開発者がコードをより適切に整理および管理するのに役立つ、一般的に使用されるソフトウェア設計パターンです。 MVC パターンは、アプリケーションをモデル、ビュー、コントローラーの 3 つの部分に分割し、各部分には独自の役割と責任があります。この記事では、PHP を使用して MVC パターンを実装する方法について説明します。モデル モデルは、アプリケーションのデータとデータ処理を表します。いつもの、

SpringMVC フレームワークの解読: なぜこれほど人気があるのか、具体的なコード例が必要です はじめに: 今日のソフトウェア開発分野では、SpringMVC フレームワークは開発者の間で非常に人気のある選択肢となっています。これは、MVC アーキテクチャ パターンに基づいた Web フレームワークであり、柔軟で軽量、効率的な開発方法を提供します。この記事では、SpringMVC フレームワークの魅力を掘り下げ、具体的なコード例を通じてその威力を実証します。 1. SpringMVCフレームワークのメリット 柔軟な構成方法 Spr

Web 開発では、MVC (Model-View-Controller) は、アプリケーションのデータ、ユーザー インターフェイス、および制御ロジックを処理および管理するために一般的に使用されるアーキテクチャ パターンです。人気の Web 開発言語である PHP は、MVC アーキテクチャを使用して Web アプリケーションを設計および構築することもできます。この記事では、MVC アーキテクチャを使用して PHP でプロジェクトを設計する方法を紹介し、その利点と注意点について説明します。 MVCMVC とは、Web アプリケーションで一般的に使用されるソフトウェア アーキテクチャ パターンです。 MV

PHP8 フレームワークによる MVC の開発: 初心者が知っておくべき重要な概念とテクニック はじめに: インターネットの急速な発展に伴い、Web 開発は今日のソフトウェア開発業界で重要な役割を果たしています。 PHP は Web 開発に広く使用されており、開発者がアプリケーションをより効率的に構築できるようにする成熟したフレームワークが多数あります。その中でも、MVC (Model-View-Controller) アーキテクチャは、最も一般的で広く使用されているパターンの 1 つです。この記事では、初心者が PHP8 フレームワークを使用して MVC アプリケーションを開発する方法を紹介します。

PHP8 フレームワークによる MVC の開発: ステップバイステップ ガイド はじめに: MVC (Model-View-Controller) は、アプリケーションのロジック、データ、およびユーザー インターフェイスを分離するために使用される、一般的に使用されるソフトウェア アーキテクチャ パターンです。これは、コードの管理と保守を改善するために、アプリケーションを 3 つの異なるコンポーネントに分離する構造を提供します。この記事では、PHP8 フレームワークを使用して MVC パターンに準拠するアプリケーションを開発する方法を検討します。ステップ 1: MVC パターンを理解する MVC アプリケーションの開発を開始する前に、

モデル ビュー コントローラー (mvc) アーキテクチャは、保守可能でスケーラブルな WEB アプリケーションを構築するための強力な設計パターンです。 PHPMVC アーキテクチャは、アプリケーション ロジックを 3 つの異なるコンポーネントに分解します。 モデル: アプリケーション内のデータとビジネス ロジックを表します。ビュー: ユーザーにデータを表示する責任を負います。コントローラー: モデルとビューの間のブリッジとして機能し、ユーザーのリクエストを処理し、他のコンポーネントを調整します。 MVC アーキテクチャの利点: コード分離: MVC はアプリケーション ロジックをプレゼンテーション層から分離し、保守性と拡張性を向上させます。再利用性: ビューとモデルのコンポーネントはさまざまなアプリケーション間で再利用できるため、コードの重複が削減されます。パフォーマンスの最適化: MVC アーキテクチャにより、ビューとモデルの結果をキャッシュできるため、Web サイトの速度が向上します。テストしやすい: 分遣隊
