命名空间可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 相同的 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 版本中都可以看到命名空间。最糟糕的是这是一个随机失败——这意味着有时会发生,有时不会,我无法找到原因。