Razor HtmlHelper Extensions (u otros espacios de nombres para vistas) Not Found

No sé si esto estaba sucediendo en el RP o Beta, pero si creo un método de extensión en HtmlHelper , no se reconoce en una página potenciada por Razor:

 namespace SomeNamespace.Extensions { public static class HtmlExtensions { public static string Foo(this HtmlHelper html) { return "Foo"; } } } 

Lo agregué a la sección en Web.config :

        

Pero arroja un error de comstackción cuando intenta ver la página:

 @Html.Foo() 

Si recreo la página con WebForms , funciona bien. ¿Cual es el trato?

Solución

Si @using SomeNamespace.Extensions en mi vista Razor, entonces funciona, pero prefiero solo tenerlo en Web.config

Desde el Beta, Razor usa una sección de configuración diferente para las importaciones de espacios de nombres que definen globalmente. En su archivo Views\Web.config , debe agregar lo siguiente:

   

Use la herramienta de actualización de MVC 3 para asegurarse automáticamente de tener los valores de configuración correctos.

Tenga en cuenta que es posible que deba cerrar y volver a abrir el archivo para que el editor recoja los cambios.

Como la respuesta aceptada sugiere, puede agregar “usar” a todas las vistas al agregar a la sección del archivo de configuración.

Pero para una vista única, podrías usar

@usando SomeNamespace.Extensions

Tuve el mismo error en una aplicación MVC 4 usando Razor. En un bash de limpiar los archivos web.config, eliminé las dos webpages: valores de configuración:

    

Una vez que restaure estos valores de configuración, las páginas se comstackrían correctamente y los errores relacionados con el método de extensión .Partial() desaparecieron.

Tuve este problema en VS 2015. Lo siguiente lo resolvió para mí:

Busque “páginas web: Versión” en las aplicaciones y actualícela a la versión 3.0.0.0. Mi web.config tenía

  

y lo actualicé a

  

Descubrí que poner esta sección en mi web.config para cada carpeta de vista lo resolvió.

         

Este error le dice que no tiene el motor de afeitar correctamente asociado con su proyecto.

Solución: en la ventana del Explorador de soluciones, haga clic derecho en su proyecto web y seleccione “Administrar paquetes Nuget …” y luego instale “Microsoft ASP.NET Razor”. Esto se asegurará de que esté instalado correctamente el paquete y agregará las entradas necesarias en su archivo web.config.

En mi caso use VS 2013, y no es compatible con MVC 3 de forma nativa (incluso usted cambia ./Views/web.config): https://stackoverflow.com/a/28155567/1536197

Como ASP.NET MVC 3 RTM está disponible, no hay necesidad de una sección de configuración para Razor. Y estas secciones se pueden eliminar de forma segura.