2010-06-03 12 views
18

me sale este mensaje en tiempo de ejecución de ASP.NET 2 página:Uso control de usuario en la misma carpeta que la página

La página 'MiCarpeta/blabla.aspx' no se puede usar el control de usuario 'MiCarpeta/MyControl.ascx ', porque está registrado en web.config y vive en el mismo directorio que la página.

Por supuesto que puede separar a 2 carpetas diferentes y por lo tanto resolver el problema, pero la pregunta es:

WTF!?!?! ¿Por qué no puedo ponerlos en la misma carpeta? ¿Por qué no pueden todos ellos ... llevarse bien? :)

Gracias

+0

Es curioso que obtengo el mismo error exacto para un control que tengo que incluye otro control. Incluso dice "La página 'MyCONTROL.aspc' ...". Página! = Control. Así que supongo que tener más de un Control en un solo directorio es un problema. – sparebytes

Respuesta

10

Esta limitación es por diseño debido a un diseño re consideración interna: el rendimiento.

Consulte here para obtener más información.

Observaciones

La clase TagPrefixInfo le permite acceder a programación y modificar información de la etiqueta en el prefijo almacenado en un archivo de configuración. Es proporciona la misma funcionalidad que el ASP.NET @Registrar directiva. Los prefijos de etiqueta asocian un "espacio de nombres" en ASP.NET con los ensamblados y los espacios de nombres que deben incluirse para los controles personalizados y los controles de usuario para que funcionen correctamente. Los objetos TagPrefixInfo se almacenan como miembros de un objeto TagPrefixCollection. La clase TagPrefixCollection le permite acceder mediante programación y modificar los controles subsección de las páginas sección de un archivo de configuración .

objetos TagPrefixInfo se añaden a la colección usando el añadir elemento y especificando un valor para el atributotagPrefix a lo largo de con valores para otros atributos relevantes. El otro requiere información varía en función del tipo de control que va a utilizar con el prefijo etiqueta especificada:

  • Si se trata de un control de usuario, se debe definir el TagPrefix, TagName y Source propiedades.
  • Si se trata de un control personalizado, debe definir las propiedades TagPrefix, Namespace y Assembly. La propiedad Assembly no es necesaria si el control se encuentra en el código de la aplicación . El mismo valor tagPrefix se puede usar para asignar a múltiples ensamblados o espacios de nombres.

Nota Cuando se especifica una fuente, el propio control de usuario no debe estar en el mismo directorio que la página. Si es así, obtienes un error en tiempo de ejecución cuando intentas cargar la página.

2

Sospecho que podría hacerlo sin registrarlo, si era esencial. Probablemente podría tener un PlaceHolder y luego usar .Controls.Add (LoadControl ("path.ascx"))

Pero si no es esencial, póngalo en un directorio diferente debido a las razones @Barry dice.

6

Si lo registra en la página o el control de usuario en lugar del web.config se cargará correctamente. Agregue lo siguiente a la parte superior de la página.

<%@ Register TagPrefix="MyControlTagPrefix" TagName="MyControlTagName" Src="~/MyFolder/MyControl.ascx" %> 
Cuestiones relacionadas