2011-08-19 46 views
10

Estoy agregando una referencia de biblioteca de control de Infragistics para usar sus controles en mis vistas ASP .NET MVC 3 Razor. He agregado el dll como una referencia al proyecto ya.Agregar una referencia a una vista en ASP.NET MVC

reference
reference properties

Mis controladores pueden acceder al espacio de nombres bien si agrego un using Infragistics.Web.Mvc en la parte superior del archivo.

Hay dos formas de indicar a las vistas que incluyan un espacio de nombres. El primero es poner @using Infragistics.Web.Mvc en la parte superior de su vista. Sin embargo si intento eso, me sale el siguiente error:

The type or namespace name 'Infragistics' could not be found (are you missing a using directive or an assembly reference?)

La segunda consiste en añadir una llamada al espacio de nombres en las páginas parte de la vista Web.config como esto:

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=ABCABCABCABCABC" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     Other namespaces... 
     <add namespace="Infragistics.Web.Mvc"/> 
     </namespaces> 
    </pages> 
</system.web.webPages.razor> 

embargo esto tampoco funciona

La única manera de que pudiera conseguir que el trabajo fue añadiendo la siguiente línea en el archivo Web.config raíz:

<system.web> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     ... 
     <add assembly="Infragistics.Web.Mvc, Version=3.11.1.2010, Culture=neutral, PublicKeyToken=blahblahblah" /> 
     </assemblies> 
    </compilation> 

On some further investigation regarding Web.config, he encontrado que mediante la inclusión de esa línea que le dice al compilador a utilizar ese recurso al compilar los recursos ASP .NET. Tuve que usar SN.exe para encontrar el PublicKeyToken.

¿Qué estoy haciendo mal?

+0

¿Ha agregado una referencia en su proyecto en Visual Studio? – jzm

+0

Sí, eso es lo que quise decir con la línea "He agregado el dll como referencia al proyecto ya". – link664

Respuesta

21

no estoy seguro de cómo funciona la instalación Infragistics o cómo se administra su sitio web, pero puede que tenga que indicar a Visual Studio para copiar el archivo DLL en la compilación por lo que está incluido en la web proyecto. Vale la pena consultar antes de explorar demasiadas otras opciones.

Aquí es un ejemplo

enter image description here

+1

¡Eso fue todo! Estableció Copy Local en true y eliminó las etiquetas de compilación y funcionó. : D – link664

+0

Funcionó para mí también :-) –

+0

Funcionó para mí también. Pero solo obtienes una lista particular de controles disponibles. ¿Cómo haces para usar el control WebDropDown? – Shumii

1

Lamentablemente, aquí tiene algo extraño, ya que los pasos de simplemente agregar la referencia e incluir el espacio de nombres son suficientes para que funcione.

En mis aplicaciones, no tengo entrada en el elemento assemblies en el web.config y solo un @using (por ejemplo, la cuadrícula MVC @utilizando MvcContrib.UI.Grid) y todo funciona bien. Sé que eso no ayuda mucho a resolver el problema, pero al menos sabes que esto 'debería' funcionar así.

También no necesita el punto y coma después de su instrucción de uso. Cuando agregó la referencia a ese conjunto, ¿a qué ubicación lo agregó?

+1

Lo agregué desde una carpeta en Archivos de programa en mi máquina local. – link664

4

En cuanto a su código no parece que usted ha puesto en el web.config lo siguiente:

<pages> 
    <namespaces> 
    <add namespace="System.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="Infragistics.Web.Mvc" /> 
    </namespaces> 
</pages> 

Este informe a su viewengine (de afeitar o los otros) a utilizar también los Infragistics DLL como una extensión.

Si usa Razor, busque también la etiqueta "namespace" dentro de View \ web.config. Puede especificar el espacio de nombres allí si lo prefiere.

creo que sirve

+0

Si utilizo "@using Infragistics.Web.Mvc" en el archivo de vista, no es necesario que incluya la llamada de espacio de nombres en Web.config. Al poner el espacio de nombres, lo hace disponible en todas las vistas. Sin embargo, ni poner el espacio de nombre o "@using" funcionará sin la llamada de ensamblaje en mi caso. – link664

+0

Si también esto no funciona, ¿quizás una instalación corrupta de infragistcs? – Iridio

Cuestiones relacionadas