名前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 の両方のバージョンで確認されています。そして最悪なのは、ランダムな失敗です。つまり、発生する場合と発生しない場合があり、理由を見つけることができませんでした。