Ich erhalte die folgende Ausnahme auf einem Aufruf von Html.RenderPartial
:Fehler mit stark typisierte Teilansicht, wenn Modell eine Eigenschaft für ein übergeordnetes Modell und ist null
Das Modellelement in das Wörterbuch übergibt vom Typ 'ChildClass', aber dieses Wörterbuch benötigt ein Modellelement vom Typ 'ParentClass'.
Diese beiden Klassen werden in folgendem Zusammenhang:
public class ChildClass { /* properties */ }
public class ParentClass
{
public ChildClass ChildProperty { get; set; }
/* other properties */
}
Ich habe eine Instanz von ParentClass
, wo der Wert von ChildProperty
null
ist.
Ich habe zwei Teilansichten, ParentView
(ViewUserControl<ParentClass>
) und ChildView
(ViewUserControl<ChildClass>
).
In der ersten Ansicht, ich habe, ist die folgende ...
<% Html.RenderPartial("~/Views/Controls/ChildView.ascx", Model.ChildProperty); %>
Das ist die Linie, die die Ausnahme an der Spitze dieses Postens aufgeführt wirft.
Ich habe die korrekte Funktionalität verifiziert, wenn ChildProperty
nicht null ist. Warum denkt MVC, dass ein Nullwert dieser Eigenschaft vom übergeordneten Typ ist?
Ich kann dieses Problem umgehen, indem Sie Code hinzufügen, der nur die ChildView
rendert, wenn ChildProperty
nicht null ist, aber diese Hälfte besiegt den Punkt der Ansicht.
ich die Fehlermeldung nicht erklären kann, aber die beste Lösung für diese Typen Das Problem besteht darin, das ** Null-Objektmuster ** anzuwenden: http://en.wikipedia.org/wiki/Null_Object_pattern –