在与页面相同的文件夹中使用用户控件

Ale*_*lex 20 asp.net user-controls

我在ASP.NET 2页面的运行时收到此消息:

"MyFolder/blabla.aspx"页面无法使用用户控件"MyFolder/MyControl.ascx",因为它在web.config中注册并与页面位于同一目录中.

当然我可以将它们分成2个不同的文件夹,从而解决问题,但问题是:

WTF!?!?!为什么我不能把它们放在同一个文件夹里?!为什么他们不能......相处!?!:)

谢谢

cod*_*ger 13

这种限制是由于内部设计考虑因素而设计的:性能.

有关详细信息,请参见此处

备注

TagPrefixInfo类允许您以编程方式访问和修改存储在配置文件中的标记前缀信息.它提供与ASP.NET @ Register 指令相同的功能.标记前缀将ASP.NET中的"命名空间"与必须包含的程序集和命名空间相关联,以使自定义控件和用户控件正常工作.TagPrefixInfo对象存储为TagPrefixCollection对象的成员.该 TagPrefixCollection类允许您以编程方式访问和修改控件中的第的配置文件的部分.

TagPrefixInfo对象使用add 元素添加到集合中,并指定tagPrefix属性的值以及其他相关属性的值.其他所需信息因您将使用指定标记前缀的控件类型而异:

  • 如果它是用户控件,则必须定义TagPrefix,TagNameSource属性.
  • 如果它是自定义控件,则必须定义TagPrefix,NamespaceAssembly属性.该大会 如果控制是在应用程序代码目录没有必需的属性.相同的tagPrefix值可用于映射到多个程序集或命名空间.

注意指定源时,用户控件本身不能与页面位于同一目录中.如果是,则在尝试加载页面时会出现运行时错误.


小智 6

如果您在页面或用户控件中注册它而不是web.config,它将正确加载.将以下内容添加到页面顶部.

<%@ Register TagPrefix="MyControlTagPrefix" TagName="MyControlTagName" Src="~/MyFolder/MyControl.ascx" %>
Run Code Online (Sandbox Code Playgroud)