2010-02-17 18 views
5

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 ChildPropertynull 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.

+0

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 –

Antwort

Verwandte Themen