2010-04-21 2 views
0

J'ai une bibliothèque avec mon ORM et je travaille avec une application MVC. J'ai un problème où les pages ne compileront pas parce que les vues ne peuvent pas voir les propriétés du modèle (qui sont héritées des classes de base de niveau inférieur). Ils système génère une erreur de compilation en disant queMVC Voir le modèle Intellisense/Erreur de compilation

« objet » ne contient pas de définition pour « ID » et aucune méthode d'extension « ID » accepter un premier argument de type « objet » est introuvable (vous manque utilisant une directive ou une référence d'assembly?)

Ceci implique que la vue ne voit pas le modèle. Dans le contrôleur, j'ai un accès complet au modèle et je dois vérifier la partie Inherits de la vue pour valider le type correct qui est passé.

Controller:

return View(new TeraViral_Blog()); 

Vue:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<com.models.TeraViral_Blog>" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
Index2 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <h2>Index2</h2> 

    <fieldset> 
     <legend>Fields</legend> 
     <p> 
      ID: 
      <%= Html.Encode(Model.ID) %> 
     </p> 
    </fieldset> 

</asp:Content> 
+0

La diffusion de l'élément fonctionne il a le bon type. J'aimerais vraiment empêcher les moulages de gonfler la vue. ((com.models.TeraViral_Blog) Modèle) .ID –

+0

Vos modèles sont-ils déclarés publics? J'imagine un scénario où ils seraient internes et les vues opèrent dans un espace de noms différent? – Peter

Répondre

1

Regardez dans votre web.config de votre look dossier Vues pour le noeud "namespaces" et ajoutez l'espace de noms de votre modèle là:

<namespaces> 
    <add namespace="com.models"/> 
</namespaces>