Пространство имен 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
Теперь, если вы объявите ClassName в заголовке элемента управления, как говорит MSD, результатом будетcontrol, чтобы получить то же имя 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.пространство имен было замечено в версиях Dot net 4.0 и 4.5.И хуже всего то, что это случайный сбой - это означает, что иногда случается, а иногда нет, и я не смог найти причину.