Umgang mit null untergeordneten Entitäten in MVC Razor

8

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

    
Duncan 26.04.2011, 17:56
quelle

5 Antworten

4

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.

    
Darin Dimitrov 26.04.2011, 18:00
quelle
7

Versuchen Sie Folgendes:

%Vor%

Bearbeiten: Eingeschlossen, um sicherzustellen, dass es in Razor funktioniert.

    
Leons 26.04.2011 17:58
quelle
5

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.

    
Freshblood 12.05.2013 04:54
quelle
2

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)

Ссылка

    
Pharabus 26.04.2011 18:09
quelle
0
%Vor%     
Darren Lewis 26.04.2011 18:02
quelle