2016-04-18 9 views
-1

Ich weiß, dass das eine dumme Frage für die MVC-Profis sein könnte, aber es wird mir in den letzten paar Stunden zu Kopfschmerzen, also nehmt bitte meine Ausreden an! Ich habe eine Klasse DeliveryDetails wie unten genannt:Wie NULL-Werte für die Bearbeitung in asp.net mvc zurückgeben?

Public Class DeliveryDetails 
{ 
    Prop1; 
    Prop2; 
    Prop3; 
    PropX; 
} 

Das Konzept ist, dass ich der angemeldete Benutzer bearbeiten die DeliveryDetails Klassendaten als ein Prozess der Kasse wollen, auch wenn es keine Daten im Backend-Datenbank Tabelle. Ist das möglich? Oder sollte ich zuerst die DeilveryDetails speichern und beim zweiten Mal des Kaufs DeliveryDetails im Bearbeitungsmodus aufrufen?

+0

welcher Typ ist Prop1, Prop2, Prop3? sind sie Liste oder Zeichenfolgen? – Bharat

+0

Nein, sie sind Strings und int. Welchen Unterschied würde es machen, dass es eine Liste war? @Bharat –

+1

Erstellen Sie einfach eine neue Instanz von 'DeliveryDetails' und übergeben Sie sie an die Ansicht. –

Antwort

0

Von der Spitze von meinem Kopf, basierend auf Ihrer Eingabe:

Sie könnten deliverydetails erstellen und speichern ihre Referenz in Session auf Session_Start Ereignis (Sie es auch aus der Datenbank oder einer anderen Quelle laden könnte, falls erforderlich).

protected void Session_Start(object sender, EventArgs e) 
{ 
    Session["DeliveryDetails"] = new DeliveryDetails(); 
} 

Dann, wenn Sie Ihre deliverydetails Instanz benötigen, können Sie extrahieren, die es nur von Sitzung wie folgt aus:

var deliveryDetails = (DeliveryDetails)Session["DeliveryDetails"]; 
// deliveryDetails.Prop1 = ... 
// deliveryDetails.Prop2 = ... 
// etc. 

Aber auf diese Weise, müssen Sie vorsichtig sein, um init/reset deliverydetails Objekt innerhalb Session, wenn es ist angemessen.

Auf diese Weise können Sie entscheiden, wann Daten in die Datenbank geschrieben werden (falls erforderlich), aber der Benutzer wird seine DeliveryDetails immer über die Sitzung verfügbar haben. Wenn Sie keine Sitzungen verwenden, können Sie dies natürlich nicht tun.

Verwandte Themen