2009-05-21 11 views
1

Ich versuche, eine stark typisierte Teilansichtstark typisierte Ansicht Unterschied (MVC Quellen vs. assembly)

<%@ 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> 

im Controller zu erstellen:

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

Diese workied gut, wenn in einem Projekt mit der binären Assembly System.Web.Mvc referenziert ausgeführt wird.

Aber wenn ich binäre Assembly entfernen und ein Projekt mit MVC-Quellen für das Debuggen hinzufügen, hört es auf, stark typisierte Ansichten zu erkennen.

Es funktioniert wie ein ViewPage statt ViewPage<TModel>

Als Ergebnis, das ich den Fehler bin immer:

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

Warum sollte diese Arbeit mit dem MVC kompiliert, aber nicht mit den Quellen? Und wie kann ich die Quellen richtig laufen lassen?

Antwort

4

Haben Sie sich verändert diese Zeile in ~/Views/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"> 

dazu ?:

<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"> 

Eigentlich ist diese Steve Sanderson post könnte

+0

Nein, ich habe PublicKeyToken nicht auf NULL gesetzt. Wirklich kann es helfen. Ich werde es jetzt versuchen. – bug0r

+0

Ja, dieser Weg funktioniert. Danke, eu-ge-ne. – bug0r

+0

Das hat bei mir nicht funktioniert. Ich konnte die Ansicht nicht mehr finden. –

0

Ich kenne keinen Grund, der dazu führen könnte, dass sich ein referenziertes Quellprojekt anders verhält als seine eigene Build-Ausgabe (Assembly). Noch kann ich empfehlen:
1- Stellen Sie sicher, dass die Quelle, die Sie verwenden, die gleiche ist, aus der die Baugruppe gebaut wurde.
2- Stellen Sie sicher, dass Sie einen Verweis auf das Quellprojekt hinzugefügt haben.
3- RC auf Ihrer Lösungsdatei, wählen Sie saubere Lösung, dann neu erstellen und es erneut versuchen.

+0

keine positive hilfreich sein Ergebnis. Ich denke, vielleicht liegt der Grund in der Zusammenstellung von MVC. Compiled Quellen im Freigabemodus hat eine Größe von 179 712 Bytes Aber binäre Assembly von MVC Release hat eine Größe von 186 176 Bytes Sieht aus wie einige der generischen Klassen sind nicht kompiliert oder so ähnlich. – bug0r

Verwandte Themen