2012-03-15 3 views
3

私はウェブサイトを構築するために何年もPHPを使用してきました。多くの場合、私が持って含める使用する、ナビゲーションメニューを言う:それはASP.NET(C#の)に来るときASP.NETに外部ファイルのコードを挿入する適切な方法は何ですか?

<?php include 'includes/nav.php'; ?> 

私は初心者の多くをしています。私は、PHPのインクルードと同等のことを行う正しい(そして最も効率的な)方法がASP.NETにあるのだろうかと思っていますか?

答えて

8

おそらくPHPのインクルードに最も類似したASP.NET構文は、あなたの例に基づいてcreating and referencing a user controlです。これにより、ページに使用できるASCXファイル内の任意のサーバー側の機能と同様に、マークアップを事前定義することができます。

use a master pageのように、基本レイアウトをフラッシュして、コンテンツプレースホルダを定義することもできます。他のページでは、コンテンツを実装して埋め込むことができます。マスターページは、そこのナビゲーション(ヘッダー、フッター、共通スクリプト、CSSなど)のように、すべてのページにわたって一貫性のあるページ要素を定義する一般的なアプローチです。

0

あなたが本当にテキストとして、このようにコードが含まれていません。 ASP.NETはクラスとアセンブリで動作します。どのようにあなたのASPを構築しているか、何をしようとしているかによって異なります。 dllへの参照を追加したり、クラスを特別クラスフォルダにドロップしたりすることができます。レイアウトを共有しようとしている場合は、マスターページを使用するのが一般的です。これを実現

+0

が繰り返されるナビゲーションメニューやフッターの含ま<% code here %>コードブロックで使用する名前空間を参照する場合どこでもALMOST。 –

+0

共有するマスターページを使用して、すべてのコンテンツページでレイアウトと機能を使用します。 – rerun

+0

私はマスタページを1つのサイトで使用していましたが、うまくいきました。私は主にDreamweaverのユーザーで、Visual Studioとは異なり、マスターページを「吸い込む」のとは異なり、DWでマスターページを持つページを開くと、グラフィカルインターフェイスを操作しようとしているときに扱いにくい、書式なしのページを入手してください。 –

4

一つの方法は、Master Pages

あなたはこれらのレイアウト上のレイアウトと、「ピンポイント」を定義を使用することです。

もう1つの方法はUser Controlsです。マークアップを別のファイル(* .ascx)に入れてから、ページやマスターページで参照します(これはインクルードに似ています)。

私はあなたに、最も礼儀正しい方法で、ASP .Netに関する書籍を読むことをお勧めします。

+0

+1また、マスターコントロールにユーザーコントロールを埋め込むことができるので、マスターページにたくさんのマークアップを埋め込む必要はありません。 – dash

+0

@ダッシュ、確かに、それも(私もこれを指定する答えを編集しました) –

+0

完全に本に同意し、情報に感謝します。ユーザーコントロールは私が考えていたものだと思う。私は数年前にサイトでそれらを使っていましたが、私よりも知識のある人がサイトにコンテンツを「含める」正しい方法ではないと教えてくれましたが、詳細には触れませんでした。だから私はそれが間違っていると思った。 –

0

免責事項:私はPHPに関する経験がなく、私が知っていることに基づいていくつかの前提を立てています。

通常のC#ファイル(ASP.NET WebフォームコードビハインドファイルまたはASP.NET MVCコントローラを含む)には、namespaceをインポートするusingステートメントがあります。それは次のようになります。

using ParentNamespace.ChildNamespace; 

これはクラスParentNamespace.ChildNamespace.SomeClassの完全な名前を入力しないChildNamespaceのクラスを使用することができます。これを行う前に、プロジェクトの参照(Visual StudioのReferences kind-ofフォルダを使用して管理)のアセンブリ内のアセンブリ(通常はDLLファイル)への参照を追加する必要があることに注意してください。 1つのアセンブリには複数の名前空間とクラスがあり、デフォルトでは標準のプロジェクトテンプレートにいくつかのアセンブリが追加されています。

ASP.NET Webフォームプロジェクトでは、user controlsと呼ばれるものを参照できます。ユーザーコントロールは、実際に再利用しやすいページのように、カプセル化されたビュー+コードです。ASPで

<myCustomPrefix:MyCustomControlName ID="myControl" runat="server" /> 

:あなたはこのようにそれを使用するあなたのコントロールをしたい場所で

<%@ Register src="~/Folder/Subfolder/MyControl.ascx" tagname="MyCustomControlName" tagprefix="myCustomPrefix" %> 

、その後:あなたはこのようなあなたのページ(またはコントロール)の上にコントロールを参照します。 NET MVCでは、コードブロックを使用して名前空間を参照することができます(構文は使用しているビューエンジンに依存しますが、使用しているものです)、次のようにHtml.RenderPartialメソッドを呼び出すことによって他のビューを再利用することができます:

ページの周りの逆参照の種類を取得する別の方法はMaster Pagesです。ページの内容にプレースホルダを定義することができます。

+0

-1:あなたの答えは既存の回答を複製します。 –

+0

私は時間をかけてより完全な答えを書いたので、あなたは私にdownvotingしていますか?それが起こると、私の答えのいくつかの部分は既存の回答を複製しますが、MVCやコードの背後にあることをどのように答えているのかを指摘してください。 – Stilgar

+0

OPがnavコントロールについて質問していることを考慮すると、使用宣言の回答の一部は適用されません。彼がmvcについて言及していないことを考慮すると、その部分も関連性がありません。残っているのは、既存の回答の複製です。私はdownvoteを削除することができますので、あなたの答えを編集してください。私は今これらのコメントが十分だと思う。 –

1

コントロールを参照して使用する場合は、

<%@ Register Src="includes/Nav.ascx" TagPrefix="uc" TagName="Nav" %> 

後でコントロールをページに追加できます。

<uc:Nav ID="navMenu" runat="server" /> 

あなたは、私が持っているでしょう最も一般的な使用は、前述にあるであろう

<%@ Import Namespace="Includes.Nav" %> 
+0

あなたの答えは既存の回答を複製しますが、構文を示す唯一のものなので、私はdownvoteしませんでした。 –

+0

私はそのことの悪い習慣があります:私は答え始め、次に気が散って数分後に戻ってくるだけです。 :-( – David

+0

重複してダウンリストを作成すると、短いプレースホルダの回答を投げて後で詳細を編集するという悪い習慣が引き起こされますが、私はdownvotedされるかどうかは気にしませんが、詳細やテストコードを投稿してください。 – Stilgar

関連する問題