J'utilise actuellement ASP.NET MVC 2.0 RC2, ayant récemment changé de version 1.0.Nouvelle erreur dans une vue fortement typée - Impossible d'énumérer le modèle?
J'ai remarqué que certaines de mes vues ne fonctionnent plus. J'ai vues héritant d'un fortement typé IEnumerable
, comme ceci:
Inherits="System.Web.Mvc.ViewPage<IEnumerable<MyProject.Models.MyType>>"
Dans le passé, je viens d'énumérer le modèle à mon avis comme celui-ci:
<% foreach (var item in Model) { %>
Mais qui ne fonctionne plus. Je reçois une erreur dans le navigateur:
foreach statement cannot operate on variables of type 'object' because 'object' does not contain a public definition for 'GetEnumerator'
je peux le réparer en effectuant la nécessaire moulages:
<% foreach (MyType item in (IEnumerable<MyType>)Model) { %>
Mais c'est assez laid, et il suggère qu'il ya eu un changement de comportement, donc j'ai besoin de savoir pourquoi.
J'ai vérifié, et ViewPage.Model
est en effet défini comme object
, donc je me demande comment cela aurait pu fonctionner comme avant. Il est également défini comme object
dans ASP.NET MVC 1.0.
Ce qui donne?
Remarque: J'ai le code source MVC chargé dans mon projet. Cela ferait-il une différence? Y a-t-il des métadonnées qui sont injectées à l'exécution et qui font ce travail, ce qui est impossible en voyant la définition object
dans la source?
Ajout de la ligne n'a eu aucun effet. –
'ViewPage.Model' est intellisensing en tant que' object'. Il semblerait donc que la page ne prenne pas correctement l'attribut 'Inherits' dans la directive' Page'. –
En fait, aucune des pages ne fonctionne plus. Ils affichent tous ViewPage.Model comme objet. –