2010-12-18 5 views
0

Ich habe eine Viewmodel-Klasse für meine benutzerdefinierte Seite erstellt. Ich habe eine gespeicherte Prozedur, die das DataTable (ORM-Tool) zurückgibt. Ich kann diesen Vorgang nicht ändern. Aber ich möchte die Datensätze aus der gespeicherten Prozedur in der Ansichtsliste anzeigen. Wie kann ich die Werte aus der Datentabelle in der Listenansicht anzeigen? Ich schätze jede Hilfe.ViewModel: wie Werte aus Datentabelle in Listenansicht angezeigt werden

Danke,

public class CreateViewModel 
{ 
     [Required] 
     public DateTime StartDate {get; set;} 
     [Required] 
     [StringLength(250, ErrorMessage = "Details must be less than 250 characters")]  
     public string Details { get; set; } 
} 

Antwort

0

Der wichtigste Weg, es zu tun, die Spaltenwerte aus jeder Zeile der Datentabelle in die Instanz-View-Modells Auslesen würde. Dies ist ein regulärer DataTable-Zugriffsweg. Dies sollte in Ihrer Service-Schicht erfolgen, die von Ihrer Controller-Aktion aufgerufen wird.

Wenn Sie das gespeicherte Proc nicht ändern können, aber nicht an eine DataTable gebunden sind, führen Sie den SqlCommand aus, um einen SqlReader zurückzugeben. Dann können Sie die Daten mit dem folgenden Code zugreifen (so etwas wie):

var list = new List<MyViewData>(); 
while(reader.Read()) 
{ 
var model = new MyViewData(); 
model.Property = reader.GetString(reader.GetOrdinal("ColumnName")); 
// .. etc.. 
list.Add(model); 
} 

return list; 

Dies das Re-Cord aus der gespeicherten proc zurück zugreift.

Sie können dann die Modelleigenschaft Ihrer Ansicht als IEnumerable festlegen. Dann können Sie auf jede der Instanzen mit einer foreach über das Modell in der Ansicht zugreifen.

Hoffe, das hilft.

+0

Vielen Dank für Ihre Hilfe. Das hat für mich funktioniert. – nav100

+0

Kein Problem. Froh, dass ich helfen konnte :-) – WestDiscGolf

Verwandte Themen