2011-03-07 4 views
6

Mi vista está teniendo problemas para encontrar una clase ubicada en una de mis referencias. Esta referencia es a un dll construido fuera del proyecto.MVC3 Vistas incapaces de encontrar clase de referencia añadida

La vista siempre da error:

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

Aquí es el controlador. No hay problemas allí.

using Company.Entities; 

public ActionResult Find() 
{ 
    Person test = Person.SelectByADDistinguishedName("L*", false); 
    return View(test); 
} 

Aquí está la vista. El error ocurre en la línea @Model.

@model Company.Entities.Person 

@{ 
    ViewBag.Title = "Bob"; 
} 

<h2>Find</h2> 

Mis vistas/Web.config se ve actualmente como esto

<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="Company.Entities" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

He comprobado hilos similares como este one pero fue en vano.

Aquí es el mensaje en la pantalla

Line 25:  using System.Web.Mvc.Html; 
Line 26:  using System.Web.Routing; 
Line 27:  using Company.Entities; 
Line 28:  
Line 29:  


Source File: c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET 

Files\root\49c9c7db\1f9dd5c8\App_Web_find.cshtml.a8d08dba.xro6gxci.0.cs Line: 27

Si me tira hacia fuera cualquier mención de la asamblea (de web.config - no hay statments @using). Aparece el mismo mensaje de error cuando se carga, pero en esta línea

public class _Page_Views_Home_Find_cshtml : System.Web.Mvc.WebViewPage<Company.Entities.Person> { 
+0

¿Intentó cerrar la vista y volver a abrirla? ¿O está obteniendo la pantalla amarilla de la muerte cuando navega por su vista? – Jimmy

+0

¿Qué error estás recibiendo? –

+0

La compilación no genera errores en los errores de sintaxis en las vistas, ¿está seguro de que el problema está en la vista? – Jimmy

Respuesta

7

Después de trabajarlo por un tiempo, terminé resolviéndolo.

he tenido que añadir el conjunto bajo la sección de conjuntos de la web.config principal (no el uno bajo los puntos de vista)

muestra del web.config.

<compilation debug="true" targetFramework="4.0"> 
    <assemblies> 
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add assembly="Company, Version=2.0.31.0, Culture=neutral, PublicKeyToken=df9010405db60e6d"/> 
    </assemblies> 
</compilation> 

Gracias a las personas que me dieron sugerencias.

+0

Por alguna razón, incluso esto no funciona para mí. Me está volviendo loco que algo tan básico parezca imposible. –

4

Asegúrese de consultar el directorio web de sus visitas para obtener un archivo web.config adicional. Parece que recuerdo haber encontrado un problema similar porque no había actualizado el web.config correcto. YMMV.

+0

Hola Hal, gracias por la respuesta rápida, he agregado el contenido de mis vistas/web.config. He agregado el espacio de nombres a las vistas/web.config y /web.config pero no tuve suerte – Lareau

2

Adición de la referencia

antes en el que utiliza su control, en las obras de archivos .cshtml. Ejemplo:

@model IEnumerable<MyApp.Models.MyModel> 
@using System.Web.UI.WebControls; 

Pero puede colocarlo en web.config, en la etiqueta namespaces. De esta manera es global para todas las vistas. Además, no es necesario especificar la versión:

<namespaces> 
     <add namespace="System.Web.UI.WebControls" /> 
</namespaces> 
Cuestiones relacionadas