4

繰り返しのHTMLがあり、それを複数のページで取得する必要があるため、作業中のプロジェクトでサーバーサイドインクルードを必死に使用したいと思います。ascxまたはその他のインクルードテクノロジーを使用する必要があります...つまり、サーバーサイドインクルードを使用すると落雷が発生しますか?

私のクライアントである仲介者は、「最も簡単なことをしてください。とにかく、これはおそらくCMSですぐにやり直されるでしょう」と言っています。サーバーサイドインクルードを使用できませんか?

それはASP.NET2.0です。

注:これは以前に尋ねられたと思いますが、見つかりませんでした。ある場合はお知らせください。個人的に削除します。ありがとうございます。

編集:提案があれば、1行でインクルードを取得する方法は私には問題ありません。

編集:なぜインクルードが好きなのですか?

コードを含める:

!--#include file="inc_footer.aspx"-->

コントロールの同じコード。まず、これらの1つが必要です

<%@ Register TagPrefix="a" TagName="HeyFooter" Src="inc_footer.ascx" %>

そして、あなたはそれをこのように使うことができます

<a:HeyFooter runat="server" />

これは私が必要としているものにはちょっと長いです。

インクルードに関する2つのセキュリティ上の懸念事項:1).inc拡張子は参照できるため、使用しないでください。2)ベストアンサーポイントとして、ユーザー変数に基づくファイル名を含めないでください。

4

3 に答える 3

4

文字列変数を介してファイルを含める場合:<!--#include file=some_variable -->、その変数がどのように埋められるかに応じて、ハッカーが自分のファイルを含めてマシン上で任意のコードを実行するために行う可能性のある攻撃があります。ただし、文字列リテラルを使用している限り、この問題は発生しません。

ASP.NETでマスターページを使用します。これは、ページの共通領域を持つために受け入れられている方法です。

通常のページと同じようにマスターページを作成すると、他の各ページの変更は最小限に抑えられます。各ページファイルの先頭に1行追加してから、使用するセクションを指定します。

于 2010-01-29T19:55:42.493 に答える
2

いいえ、シンプルに保ちたいのであれば、これを行うために派手な.NETWebフォームの方法を使用する必要はほとんどありません。挿入したい場所にこれを置くだけです:

<!--#include virtual="../repeatStuff/fun.html" -->

htmlがそこに表示されます。別のディレクトリの上下にパスを指定しました。これは「最も簡単」ですが、非常に単純であるという利点もあります。これはビジュアルデザイナーには表示されないことに注意してください。(とにかく使用することはありません。)

于 2010-01-29T20:00:22.997 に答える
1

私は今でもあなたが説明する目的のために時々インクルードを使用しています。

とにかく単なるhtmlなので、ユーザーコントロールを登録する必要はありません。また、マスターページは、実際にはいくつかの選択したページに配置する必要があるHTMLのスニペットであるため、必要ありません。

だから私はヘルプテキストファイルの用語集からこのようなインクルードを持っています:

<!--#include file="~/Glossary/BusinessDetails.inc"-->

私の意見では、この目的で古い学校のインクルードファイルを使用することに何の問題もありません。

于 2010-01-29T20:02:49.347 に答える