2011-02-24 14 views
22

No puedo obtener intellisense para mis propios helpers html. Mi CustomHtmlHelpers.cs se parece a esto:¿Por qué mis Html Helpers no tienen intellisense?

using System.Web.Mvc; 
using System.Text; 
using System.Web; 

    namespace laget.Web.Helpers 
    { 
     public static class CustomHtmlHelpers 
     { 
      //MY HELPERS 
     } 
    } 

y en mi Web.config:

<pages> 
     <namespaces> 
     <add namespace="laget.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages"/> 
     <add namespace="System.Web.Helpers" /> 
     </namespaces> 
    </pages> 

Si pongo <@using laget.Web.Helpers> en mi opinión, me sale el tema intelisense fija.

¿No debería ser suficiente con el código en Web.config?

Respuesta

24

A veces parece que no funciona de inmediato. Intente cerrar el archivo .cshtml y vuelva a abrirlo. Entonces, si eso no funciona, intente reiniciar Visual Studio. También asegúrese de que realmente compiló su proyecto, intellisense no funcionará con ayudantes no compilados.

+2

Tienes tanto derecho. Se reinició Visual Studio y funciona de inmediato. – MikeB

+0

¡Muchas gracias a usted! Al menos he pasado una hora con eso hoy :) – MikeB

+0

Sí, también he pasado tiempo en esto, por suerte la pregunta final "¿Has intentado apagarlo y volver a encenderlo?" Siempre aparece en mi cabeza cuando algo sucede roto :) –

0

Lo necesita en la página local. Estoy bastante seguro de que esto tiene que ver con la resolución del espacio de nombres. No es exactamente seguro a qué se refiere sin la declaración de uso local.

6

Estoy bastante seguro de que no está editando el archivo correcto Web.config.

Necesita agregar su espacio de nombres al que está en su directorio Views.

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
    <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="laget.Web.Helpers" /> 
    </namespaces> 
    </pages> 
</system.web.webPages.razor> 
+1

He intentado ambos archivos pero nada ... – MikeB

+1

descargue y vuelva a cargar el proyecto. –

0

Me encontré con esto hoy también. En ocasiones, solo cerrar la ventana de la vista de Razor en Visual Studio y volver a abrirlo hará el truco sin tener que hacer un reinicio completo de Visual Studio.

5

En realidad, no es necesario reiniciar Visual Studio en la mayoría de los casos. ¡Todo lo que necesita hacer es cerrar el archivo .cshtml y volver a abrirlo!

+0

Esto funcionó, ¡gracias! Mucho mejor que reiniciar VS, ¡porque todos sabemos que eso lleva mucho tiempo! :) – SomeRandomDeveloper

0

Traté de resolver un problema como este ayer. Tenía e precompilado dll (nombre del proyecto, es decir: MyHtmlHelpers) que contenía ayudantes y muchas otras clases.

Hice referenciar el ensamblado en el proyecto web y todos los "estándares" -helpers aparecieron en intellisense pero, aunque agregué el espacio de nombres a ambos web.config en la raíz y en la carpeta views, no funcionó nada. Cuando se ejecuta el proyecto, los ayudantes funcionan, pero no en intellisense.

Agregué una nueva clase y escribí un nuevo helper html dentro del proyecto web, agregué el espacio de nombres a web.config. Y eso funcionó.

Después de algunas horas agregue intenté mi última tarjeta, agregando el proyecto MyHtmlHelpers a la misma solución que mi proyecto web. Eso hizo el truco. No cambié nada en las configuraciones, simplemente agregué el proyecto a la misma solución y cambié la referencia para apuntar al proyecto en lugar del dll compilado.

¿No es eso extraño? ¿Un error de VS?

0

Descubrí que estaba agregando la referencia al web.config incorrecto. No es la configuración principal, pero el web.config en el directorio de puntos de vista ...

0

Así que ahora voy a mostrar los pasos

1.Create o abrir un proyecto de biblioteca de clases existente (si se abre una existente asegúrese de eliminar el paquete nuget MVC5)

2.Agregue el MVC (5.0) paquete Nuget ( proyecto botón derecho del ratón en el explorador de soluciones -> Administrar paquetes NuGet -> búsqueda de MVC e instalar “Microsoft ASP.NET MVC”)

3.Cierre cualquiera y todos abiertos .cshtml archivos

4. Haga clic derecho en proyecto -> Propiedades -> Construir -> cambie la ruta de salida a su proyecto "bin /"

5. Agregue el siguiente mínimo Web.config a la raíz de su proyecto de biblioteca de clase (el archivo de configuración web es únicamente necesario para intellisense. La configuración (a través de Web.config) debe hacerse en la aplicación web que aloja su ensamblado ClassLibrary)

6. Limpia y crea la solución.

7.Open archivo cshtml y tratar ahora :)

0

He descubierto que si todavía no funciona, puede que tenga que ir a las propiedades de la clase personalizada y cambiar la acción de construcción de "contenido" compilar". Eso lo resolvió para mí.

Cuestiones relacionadas