2009-01-13 13 views
7

Tengo una aplicación web C# integrada en Visual Studio 2008 donde dependemos en gran medida de los controles de usuario para bloques 'preconstruidos' de ASP.NET.Controles de usuario de Visual Studio 2008 registrados en web.config no registrándose con intellisense

En lugar de registrar una gran pila de controles de usuario en cada página, registramos todos los controles en un archivo local (a una carpeta específica) web.config. La ventaja es que podemos usar los controles y las páginas se ven más limpias en la vista de fuente. Sin embargo, ni la vista Diseño VS2008 ni Intellisense reconocen el hecho de que los controles están registrados en web.config. Sin embargo, la aplicación en sí misma funciona como se esperaba.


Normalmente en la parte superior de cada página que tendríamos una etiqueta como esta:

<%@ Register src="~/CommonControls/Foo.ascx" tagname="Foo" tagprefix="Bar" %> 

Y registramos los controles en un web.config local de este modo:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <pages> 
      <controls> 
       <add src="~/CommonControls/Foo.ascx" tagName="Foo" tagPrefix="Bar"/> 
      </controls> 
     </pages> 
    </system.web> 
</configuration> 

¿Alguien sabe de una solución para que Intellisense reconozca estos controles personalizados? O, ¿hay una "mejor" forma de hacer esto?

+0

Podría estar equivocado, pero pensé que proyectos de aplicación web (en especial con VS2008 SP1) proporcionará intelisense sin el

Respuesta

2

Aunque esto no funciona en un archivo Web.Config local, puede usar la etiqueta Ubicación en su archivo raíz web.config para lograr el mismo resultado.

Por ejemplo:

<?xml version="1.0"?> 
<configuration> 
    <location path="MyPath"> 
     <system.web> 
      <pages> 
       <controls> 
        <add src="~/CommonControls/Foo.ascx" tagName="Foo" tagPrefix="Bar"/> 
       </controls> 
      </pages> 
     </system.web> 
    </location> 
</configuration> 
1

Probablemente tiene que ver con el hecho de que no está registrado en el archivo web.config principal. Pruébelo poniendo una o dos referencias en el archivo web.config principal.

+0

Hola. Gracias por su respuesta. Sí, funciona en el web.config principal, pero esperaba que esto funcionara en la web.config local. Sin duda, este es el comportamiento esperado. ¿Alguna idea? Mike –

0

¿Podría porque está registrando el control dos veces y intellisense no puede resolver la referencia?

me habría exepect que el control debe ser registrado en un archivo de configuración o en la directiva de página

+0

Hola Blatfrig. Gracias por su sugerencia. La pregunta es ligeramente ambigua. Para aclarar: no lo registramos dos veces, los dos fragmentos de código anteriores eran alternativas que deberían funcionar. ¡Estoy de acuerdo en que hacerlos juntos causaría confusión! - Mike –

1

Probé el código de muestra y Intellisense trabaja tanto en la vista de código de la página aspx y el código detrás de la página. Puede verificar los nombres de las clases de sus controles de usuario, visual studio incluye el nombre de la carpeta en el nombre de la clase de forma predeterminada. Por lo tanto, su control puede llamarse CommonControls_Foo en lugar de Foo como era de esperar.

De cualquier forma, el archivo web.config no tiene nada que ver con el Intellisense del código subyacente. Verifique el nombre y el espacio de nombres de la clase.

Cuestiones relacionadas