No sé si esto estaba sucediendo en PR o Beta, pero si creo un método de extensión HtmlHelper
, no se reconoce en una página con Razor:
namespace SomeNamespace.Extensions {
public static class HtmlExtensions {
public static string Foo(this HtmlHelper html) {
return "Foo";
}
}
}
Lo agregué a la <Namespaces>
sección en Web.config
:
<pages>
<namespaces>
<add namespace="System.Web.Mvc" />
<!-- snip -->
<add namespace="SomeNamespace.Extensions"/>
</namespaces>
</pages>
Pero arroja un error de compilación al intentar ver la página:
@Html.Foo()
Si vuelvo a crear la página con WebForms , funciona bien. ¿Cual es el trato?
Solución alterna
Si lo incluyo @using SomeNamespace.Extensions
en mi vista Razor, entonces funciona, pero prefiero tenerlo enWeb.config
asp.net-mvc-3
extension-methods
razor
html-helper
swilliams
fuente
fuente
Respuestas:
Desde la Beta, Razor usa una sección de configuración diferente para definir globalmente las importaciones de espacios de nombres. En su
Views\Web.config
archivo debe agregar lo siguiente:Use la herramienta de actualización MVC 3 para asegurarse automáticamente de que tiene 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.
fuente
Como sugiere la respuesta aceptada, puede agregar "usar" a todas las vistas agregando a la sección del archivo de configuración.
Pero para una sola vista, podrías usar
fuente
Tuve este mismo error en una aplicación MVC 4 usando Razor. En un intento de limpiar los archivos web.config, eliminé los dos
webpages:
valores de configuración:Una vez que restaure estos valores de configuración, las páginas se compilarían correctamente y los errores relacionados con el
.Partial()
método de extensión desaparecieron.fuente
Tuve este problema en VS 2015. Lo siguiente lo resolvió por mí:
Busque "páginas web: Versión" en la configuración de la aplicación y actualícela a la versión 3.0.0.0. Mi web.config tenía
y lo actualicé a
fuente
Descubrí que poner esta sección en mi web.config para cada carpeta de vista lo resolvió.
fuente
0.0.0.0-2.0.0.0
a1.0.0.0
), y el/View/web.config
archivo no anula eso. (Además, no creo que lo necesites en todos/View/Subfolder/
)Este error le dice que no tiene el motor de afeitar asociado correctamente con su proyecto.
Solución: en la ventana Explorador de soluciones, haga clic con el botón derecho en su proyecto web y seleccione "Administrar paquetes Nuget ..." y luego instale "Microsoft ASP.NET Razor". Esto asegurará que el paquete esté instalado correctamente y agregará las entradas necesarias en su archivo web.config.
fuente
En mi caso, use VS 2013, y no es compatible con MVC 3 de forma nativa (incluso si cambia ./Views/web.config): https://stackoverflow.com/a/28155567/1536197
fuente
Dado que 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.
fuente