Ich habe eine MVC-Rasiereransicht, die über eine Orders-Sammlung iteriert. Jede Bestellung hat einen Kunden, der null sein kann.
Problem ist, ich bekomme eine Null-Referenz-Ausnahme, wenn dies der Fall ist.
%Vor%@ item.Customer.Name explodiert, wenn item.Customer null ist (wie Sie es erwarten).
Das muss eine einfache Frage sein, aber ich konnte die Antwort nicht finden!
Was ist der beste Weg, damit umzugehen, ohne ein ViewModel einzurichten?
Danke Duncan
Eine einfache Aufgabe:
%Vor%Dies gesagt und gezeigt, das ist nur ein Workaround. Die wirkliche Lösung besteht darin, ein bestimmtes Ansichtsmodell zu definieren und zu verwenden.
Erstens können Sie den integrierten HTML-Helper Html.DisplayFor(m => m[i].Customer.Name)
verwenden, wenn Sie anstelle von foreach for iteration verwenden würden. Aber das hat wenige Nachteile. Sie haben möglicherweise keine Indexer-Collection-Eigenschaft und DisplayFor-Methode get Ausdruck Parameter und kompilieren Sie es, was teuer ist.
Anstelle von ihnen können Sie Ihre eigene Methode erstellen, die dieses Szenario viel besser wie unten behandelt.
%Vor%Jetzt können Sie es wie
verwenden %Vor%Sie können die NullSafe-Methode als Erweiterung oder statisch auswählen.
Nicht sicher, wie Sie diese Objekte aufbauen, aber eine andere Möglichkeit, dies zu bewerkstelligen, ist die Verwendung des Null-Objekt-Entwurfsmusters. Dies würde den Test überflüssig machen und Ihnen erlauben, aussagekräftigen Text für den Namen auszugeben ("Unbekannt"). ", Nichts, was auch immer)
Tags und Links asp.net-mvc-3 entity-framework razor asp.net