2

'ASP'名前空間は、Webサイトプロジェクトのソースコードのどこでも使用されていないため(または少なくともWebサイトのプログラマーによって明示的に使用されていないため)生成されたようです。それがどのように完全に実現されているのか知りたいです。

例:
ASP名前空間の作成を推進するのはMSBuildの責任ですか?その場合、その命令はどこにありますか?C#コンパイラは、独自の意志で名前空間を作成しないことを知っています。そのため、Webサイトのプログラマーが使用しない場合でも、ASP名前空間をその名前空間にフィードする必要があります。多分それは別のツールによってソースコードに生成されます。'TemporaryASP.NETFiles'フォルダーが関係している可能性があります。ご覧のとおり、名前空間のロックを解除して理解するために、すべての厄介な詳細が必要です...

Visual Studioには、ASP名前空間を使用できるようにするツール(IntelliSenseがサポートしている)があるようですが、それは私の理解を覆い隠します。

「ASP」名前空間は、最初から最後までWebサイトでどのように実現されますか?

(これをすべて説明する良い記事は見つかりませんでした。)


ここでは、ASP名前空間が.NETReflectorに表示されています。(この画像はRick Strahlのブログから取得したものです)

ここに画像の説明を入力してください

4

3 に答える 3

1

名前ASP.空間を使用して、キャストがより安全に機能するカスタム コントロールを動的に読み込むことができます。

カスタム コントロールが ASP で使用できる名前を制御できます。ClassName="ControlClass"名前空間の宣言に を配置することにより、名前空間と動的コントロールはASP.ControlClass、使用時に安全なキャストを行うための参照を持つようになりましたLoadControl

MSDN http://msdn.microsoft.com/en-us/library/c0az2h86(v=vs.100).aspxで完全な手順を読むことができます。

ASPを使用しない場合。名前空間とコントロールが自動名をとったままになっていると、ケースが失敗する可能性があります(理由はわかりませんが、サーバーで時々失敗します)そこに作成された参照は

namespace ASP
{
    [CompilerGlobalScope]
    public class Control_Class_nameByDirectory : ControlClass
    {
        [DebuggerNonUserCode]
        public ControlClass();

        protected override bool SupportAutoEvents { get; }

        [DebuggerNonUserCode]
        protected override void FrameworkInitialize();
    }
}

そして、キャストを作成しようとすると、(ControlClass)LoadControl("~/module/Control.ascs")失敗する可能性がありControl_Class_nameByDirectoryます。ControlClass

MSD が言うように、コントロール ヘッダーで ClassName を宣言すると、結果は、定義したものと同じ ClassName を取得するコントロールになります。

namespace ASP
{
    [CompilerGlobalScope]
    public class ControlClass : global::ControlClass
    {
        [DebuggerNonUserCode]
        public ControlClass();

        protected override bool SupportAutoEvents { get; }

        [DebuggerNonUserCode]
        protected override void FrameworkInitialize();
    }
}

ここでは、 を使用してASP.ControlClass、失敗しても心配することなくコントロールをキャストできます。

したがって、ここで説明されている手順に従ってください http://msdn.microsoft.com/en-us/library/c0az2h86(v=vs.100).aspxそのような問題を回避できます。(そして私は彼らに直面したこと)

ASP を参照せずにカスタム コントロールの大文字と小文字を区別できないという問題。名前空間は、ドット ネット 4.0 と 4.5 の両方のバージョンで確認されています。そして最悪なのは、ランダムな失敗です。つまり、発生する場合と発生しない場合があり、理由を見つけることができませんでした。

于 2013-02-06T10:42:05.010 に答える
0

サーバー コントロール タグのプレフィックスを探していると思いますが、そうでない場合はお知らせください。

プレフィックスは、configuration/system.Web/pages/controls の下の web.config ファイルに登録されます。必要に応じて変更したり、独自のコントロール ライブラリに追加のプレフィックスを登録したりできます。

MSDN 情報はこちら: http://msdn.microsoft.com/en-us/library/ms164640.aspx

于 2011-08-10T22:39:14.610 に答える
0

この名前空間は、ASP.NET が .aspx および .ascx ファイルの解析から生成するコードで使用されます。

でも、なぜあなたが気にするのかわかりません。それは単なる名前空間です。それについて「特別な」ことは何もなく、その名前空間で何かを参照するべきではありません。


これらすべてがどのように機能するかを理解するには、「ASP.NET ライフ サイクル」をお読みください。

于 2011-08-10T23:24:49.907 に答える