web-dev-qa-db-ja.com

サーバー側に相当するASP.NETには、

サーバー側インクルードの従来のASP=メソッドはASP.NETで動作しますが、推奨される方法ではないという印象を受けます。同じ効果を得るためにどのように「想定」されていますか?

これは私が現在それをやっている方法です:
<!-- #include file ="functionlib.aspx" -->

33
Scott

これで、この効果を提供するオプションがいくつかありますが、方法は異なります。

  • ユーザーコントロール(.ascx)
  • マスターページ(.master)
  • サーバー側コントロール(.dll)
  • クラスライブラリ(.dll)
  • App_Codeクラス(.cs/.vb)

それぞれを使用して、異なる目的を達成します。それはあなたが本当にやろうとしていることに依存します。インクルードファイルの名前を考えると、ページのコンテキスト内で使用されるライブラリ関数をインクルードしようとしていると思います。

したがって、メソッドを含むクラスライブラリを作成し、それらをアプリケーション/ aspxにインポートします。

さまざまなコンテンツの本文を提供するためにほとんどのレイアウト作業を行うページのテンプレートを検討している場合は、マスターページに興味があります。

多くのページで使用できるテンプレートコントロールを検討している場合は、ユーザーコントロールの後にいます。

多くのプロジェクトで多くのユーザーが使用できるテンプレートコントロールを検討している場合は、サーバーサイドコントロールを検討することになります。

クラス/メソッドのライブラリを見ている場合は、クラスライブラリを開発するか、初めて呼び出されたときにJITコンパイルできるapp_codeクラスを使用します。このcouldは、一見すると従来のASPのように見なされますが、実際には、クラスライブラリのクラスのように単一のユニットとして機能します。クラスライブラリへの参照を必要とせずに、コードビハインド内またはaspx/ascxコードの<%%>タグ内から呼び出すことができます。

「インクルード」自体を実際に使用することはもうありませんが、ツールキットのこれらの各ツールを使用すると、さまざまなシナリオに同様の概念を提供できます。開発者は、Webページのページライフサイクル全体と異なる方法で対話します。 ASP.NETは、従来のASPとはまったく異なる獣です。それは本当に別の見方/アプローチを取っており、違いを理解するのにある程度の忍耐力が必要です。

37
BenAlabaster

<% Response.WriteFile("myFile.aspx"); %>はどうですか?

参照: https://support.Microsoft.com/en-us/help/306575/how-to-dynamically-include-files-in-asp-net

12
Stuart

ASP.NET MVCを使用している場合は、Html.RenderPartialが役立ちます。

http://msdn.Microsoft.com/en-us/library/system.web.mvc.html.renderpartialextensions.renderpartial.aspx

部分ビューは.ascxまたは.aspxとして実装でき、上記の呼び出しを「プライマリ」ページに配置すると、基本的に「この部分ビューから出力を取得してここにレンダリングする」と表示されます。

部分ビューは、プライマリビューがコントローラーから受け取ったViewDataを利用できます。

9
Martin Peck

あなたが見ている必要があるように聞こえるのは、 MasterPages の概念全体です。

関数やその他のユーティリティ(htmlコンテンツではない)のインポートだけを見ている場合を除きます。その場合(およびコードビハインドモデルを使用している場合)、. vbページの上部にあるimportsコマンドを使用して、適切なファイルまたは名前空間を含めることができます(C#に合わせて調整します)。

1
TheTXI