2009-05-21 7 views
1

Je suis en train de créer une vue partielle fortement typéedifférence de vue fortement typée (sources MVC vs assemblage)

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"  Inherits="System.Web.Mvc.ViewPage<IEnumerable<Pt.Data.Services>>" %> 
<table> 
    <% foreach (Pt.Data.Services item in Model) 
     { Html.RenderPartial("ServiceItem",item); } %> 
</table> 

dans le contrôleur:

IEnumerable<Services> Model=null; 
using (tl ctx = new tl(Config.ConnectionString)) 
{ 
    Model = ctx.Services.ToList(); 
} 
return View("List",Model); 

Cette workied bien lors de l'exécution dans un projet avec l'ensemble binaire System.Web.Mvc référencé. Mais si je supprime l'assemblage binaire et ajoute un projet avec des sources MVC pour le débogage, il arrête de reconnaître les vues fortement typées.

Il fonctionne comme un ViewPage au lieu de ViewPage<TModel>

En conséquence, je reçois l'erreur:

Compiler Error Message: CS1579: foreach statement cannot operate on variables of type 'object' because 'object' does not contain a public definition for 'GetEnumerator'`

Pourquoi serait-ce travail avec le compilé MVC, mais pas avec les sources? Et comment puis-je faire fonctionner les sources correctement?

Répondre

4

Avez-vous changé cette ligne dans ~/Vues/web.config:

<pages validateRequest="false" 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, 
          System.Web.Mvc, Version=1.0.0.0, Culture=neutral, 
          PublicKeyToken=31BF3856AD364E35" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, 
        Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, 
          System.Web.Mvc, Version=1.0.0.0, Culture=neutral, 
          PublicKeyToken=31BF3856AD364E35"> 

à cette ?:

<pages validateRequest="false" 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, 
          System.Web.Mvc, Version=1.0.0.0, Culture=neutral, 
          PublicKeyToken=NULL" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, 
        Culture=neutral, PublicKeyToken=NULL" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, 
          System.Web.Mvc, Version=1.0.0.0, Culture=neutral, 
          PublicKeyToken=NULL"> 

En fait, ce Steve Sanderson post pourrait être utile

+0

Non, je n'ai pas défini PublicKeyToken sur NULL. Vraiment, ça peut aider. Je vais essayer maintenant. – bug0r

+0

Oui, cette façon fonctionne. Merci, eu-ge-ne. – bug0r

+0

Cela n'a pas fonctionné pour moi. Je n'ai plus réussi à trouver la vue –

0

Je ne connais pas de raison qui pourrait provoquer un projet source référencé à se comporter différemment de sa propre sortie de génération (assembly). Encore je peux recommander:
1- Assurez-vous que la source que vous utilisez est la même que l'assemblage a été construit.
2- Assurez-vous d'avoir ajouté une référence au projet source.
3- RC sur votre fichier de solution, choisissez une solution propre, puis reconstruisez et réessayez.

+0

pas positif résultat. Je suppose que peut-être la raison est dans la compilation de MVC. Les sources compilées en mode release ont une taille de 179 712 octets Mais l'assemblage binaire de la version MVC a une taille de 186 176 octets On dirait que certaines classes génériques ne sont pas compilées ou quelque chose comme ça. – bug0r

Questions connexes