Dies hat nichts mit anonymen Typen mit internen Eigenschaften zu tun
Es ist durchaus möglich , anonyme Typen von einer Ansicht an eine Teilansicht zu übergeben
Ich bin heute auf dasselbe Problem gestoßen, und es hatte nichts (direkt) mit dem Problem zu tun, anonyme Typen und ihre inhärenten internal
Eigenschaften zu übergeben.
In Bezug auf die OP-Frage ist die Antwort von @Lucas daher irrelevant - auch wenn die Problemumgehung funktioniert .
In der OP-Frage wird ein anonymer Typ von einer Ansicht in Baugruppe X an einen Teil in Baugruppe X übergeben . Daher ist das von David Ebbo skizzierte Problem, dass die Eigenschaften für anonyme Typen intern sind, ohne Bedeutung. Die für die Ansicht kompilierten Typen, der partielle und der anonyme Typ sind alle in derselben Assembly enthalten .
Was verursacht also das plötzliche Versagen, einen anonymen Typ von einer Ansicht an einen Teil zu übergeben?
Zumindest in meiner Situation stellte ich fest, dass es an einer anderen Ansicht im GLEICHEN ORDNER lag, die einen Modelltyp angibt, der nicht aufgelöst werden kann . Ansichten werden zur Laufzeit kompiliert, und daher wäre es sinnvoll, wenn ein Fehler zur Laufzeit beim Kompilieren der Ansichten auch einen Fehler beim Kompilieren der dynamischen Typen bedeuten würde und der Teil einfach eine erhalten würdeobject
. Es ist nicht sofort klar, was los ist, aber im spezifischen Beispiel des OP (und meinem) ist dies höchstwahrscheinlich die Ursache des Problems.
Es ist interessant festzustellen, dass anonyme Typen nicht in gleicher Weise betroffen sind, wenn der Modelltyp korrekt ist, ein anderer Teil der Ansicht jedoch nicht kompiliert wird. Dies muss darauf zurückzuführen sein, wie Razor die dynamische Kompilierung der Bestandteile der Ansicht aufteilt.
Wenn Sie die fehlerhafte Ansicht korrigiert haben, erstellen Sie entweder die gesamte Lösung neu oder bereinigen und erstellen Sie das Projekt neu, bevor Sie überprüfen, ob es behoben ist.
Um sicherzustellen, dass Sie nicht erneut davon betroffen sind, können Sie die Kompilierungszeitkompilierung Ihrer Razor-Ansichten aktivieren, indem Sie dies Ihrer csproj
Datei hinzufügen :
<PropertyGroup>
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>