¿Hay algún tipo de magia que necesito usar para obtener los espacios de nombres en el pages/namespaces
elemento en la configuración web?
<pages>
<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="System.Web.WebPages"/>
<add namespace="System.Web.Helpers"/>
<add namespace="MyCustomHelpers"/>
</namespaces>
</pages>
Lo anterior simplemente no quiere funcionar. Sé que el espacio de nombres está bien porque cuando pongo el @using MyCustomHelpers
en la parte superior de la página funciona mágicamente.
Esto es para que pueda Html.SomeFunction()
trabajar sin tener que poner @using
en la parte superior de todas mis páginas
asp.net-mvc-3
razor
MyNameIsJob
fuente
fuente
<system.web.webPages.razor>
sección de configuración ya debería existir en ESE Web.Config!Respuestas:
Actualización : consulte mi respuesta actualizada que se aplica a MVC 3 RC: Extensiones Razor HtmlHelper (u otros espacios de nombres para las vistas) No encontrado
Esto ha cambiado entre MVC 3 Preview 1 y MVC 3 Beta (lanzado hoy). En Vista previa 1, Razor utilizó la sección de configuración de espacios de nombres de WebForms. Sin embargo, en la Beta hay una nueva sección de configuración que está separada de la de WebForms. Deberá agregar lo siguiente a su archivo web.config (o simplemente comenzar con un nuevo proyecto desde la plantilla):
Tenga en cuenta que es posible que deba cerrar y volver a abrir el archivo para que el editor recoja los cambios.
Tenga en cuenta que hay otros cambios en lo que se requiere en web.config para que Razor funcione en MVC3 Beta, por lo que sería mejor que eche un vistazo al
~\View\Web.config
archivo que se incluye en las plantillas de proyecto Beta.fuente
pageBaseType="System.Web.Mvc.WebViewPage"
atributo también es obligatorio. He actualizado tu respuesta.Si coloca su declaración de espacio de nombres en la
Web.config
carpeta raíz "Vistas" y / o en la carpeta "Vistas" del área actual (dependiendo de dónde esté su vista), debería funcionar como se esperaba.fuente
Encontré este http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx que explica cómo agregar un espacio de nombres personalizado a todas sus páginas de afeitar.
Básicamente puedes hacer esto
y ponga el siguiente código en su AssemblyInfo.cs
el método InitializeApplication se ejecutará antes de Application_Start en global.asax
fuente
Para lo que vale, otra técnica es simplemente colocar su clase de extensión auxiliar en un espacio de nombres del sistema que ya está incluido en el motor de vista de forma predeterminada. Por ejemplo:
De esta manera, siempre que se haga referencia a la biblioteca que contiene la clase, todo lo verá. Como está extendiendo una
System.Web.Mvc
clase, parece razonablemente aceptable colocar los métodos de extensión en el mismo espacio de nombres.fuente
Intente cerrar y volver a abrir la vista después de asegurarse de que los cambios se realizaron en web.config en la raíz de la vista.
Cerrar y reabrir solucionó mi problema.
Mira aquí:
Problema de espacio de nombres ASP.NET MVC 4 en la vista de afeitar
fuente