Cela n'a rien à voir avec les types anonymes ayant des propriétés internes
Il est parfaitement possible de passer des types anonymes d'une vue à une vue partielle
J'ai rencontré le même problème aujourd'hui et cela n'avait rien (directement) à voir avec le problème du passage des types anonymes et de leurs internal
propriétés inhérentes .
En tant que tel, en ce qui concerne la question des OP, la réponse de @Lucas n'est pas pertinente - même si la solution de contournement fonctionnera .
Dans la question OP, un type anonyme est passé d'une vue dans l'assembly X à une vue partielle dans l'assembly X , par conséquent le problème que David Ebbo a souligné concernant les propriétés internes pour les types anonymes est sans conséquence; les types compilés pour la vue, le type partiel et le type anonyme sont tous contenus dans le même assembly .
Alors, qu'est-ce qui cause l'échec soudain de passer un type anonyme d'une vue à un partiel?
Au moins dans ma situation, j'ai découvert que c'était dû à une autre vue dans le même dossier qui spécifie un type de modèle qui ne peut pas être résolu . Les vues sont compilées au moment de l'exécution, et il serait donc logique qu'un échec lors de l'exécution de la compilation des vues signifierait également un échec de compilation des types dynamiques et que le partiel recevrait simplement un fichier object
. Ce qui se passe n'est pas immédiatement évident, mais dans l'exemple spécifique des OP (et le mien), c'est plus que probablement la cause du problème.
Il est intéressant de noter que si le type de modèle est correct mais qu'une autre partie de la vue ne se compile pas, les types anonymes ne sont pas affectés de la même manière. Cela doit être dû à la façon dont Razor rompt la compilation dynamique des composants de la vue.
Une fois que vous avez corrigé la vue incriminée, reconstruisez toute la solution ou nettoyez et reconstruisez le projet avant de vérifier si elle est corrigée.
Pour vous assurer de ne pas être à nouveau pris au piège, vous pouvez activer la compilation au moment de la compilation de vos vues Razor en ajoutant ceci à votre csproj
fichier:
<PropertyGroup>
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>