2012-10-31 15 views
5

Ich habe generische Liste Eigenschaft, die ich an die Ansicht binde. Das Problem ist, wenn ich die Daten nach der Eingabe einiger Werte in der Ansicht poste, wird die Seite aktualisiert und behält den Wert in der Ansicht nicht bei. Und auch wenn ich versuche, Html.ValidationMessage zu addieren Für diesem speziellen Bereich ich einen FehlerASP.NET MVC genrische Liste in viewdata

"The value 'System.Collections.Generic.List`1[<name of the class>]' is invalid" 

Mein Code sieht wie folgt aus, Modell

public List<Chart> Charts 
    { 
    get 
     { 
     return _repository.GetCharts(Convert.ToInt32(this.Template_Id)); 
     } 
     set{} 
    } 

eigentliche Klasse

public class Chart 
    { 
     public string ChartDisplayText { get; set; } 
    } 

Die Eigenschaft in der Diagrammklasse ist diejenige, in die ich gehe den Wert ing in View Jede Hilfe sehr geschätzt, Dank

+1

nicht sicher, ob ich es richtig verstanden habe, aber sieht aus wie Ihre neue Wert nicht ist wird beibehalten, wo immer Sie die Daten aus der Methode _repository.GetCharts laden. – tucaz

Antwort

0

den Wert nach Post behalten Sie die Daten zurück wie zurückkehren können: return View(chartList);

der Fehler, den Sie für die Validierung bekommen ist, weil in MVC Validierung Kaskadierung nicht ist angewendet, wenn seine Object Eigenschaft. Sie müssen Vorlage oder Verwendung Baugerüst HTML Helfer gelten:

@foreach(Charts item in Model) 
{ 
@Html.EditorFor(x => item.ChartDisplayText) 
} 

Sie für

richtige Gerüste/template HTML-Helfer in asp.net Mvc überprüfen
+0

Hallo Rohit, danke für die Antwort. Aber mein Problem ist immer wenn _repository.GetCharts (Convert.ToInt32 (this.Template_Id)); Führt es immer aus, gibt eine neue Liste von Diagrammen zurück. Nehmen wir an, ich habe modelstate error in einem anderen Feld, ich möchte den Wert beibehalten, den der Benutzer für ChartDisplaytext während des Postbacks eingegeben hat. Aber es schafft immer ein neues. Dies ist der Code, den ich geschrieben habe, wenn der Modellzustand ungültig ist. RedirectToAction ("", "Controllername", Modell); Während die Ansicht aktualisiert wird, enthält das Modell den vom Benutzer eingegebenen Wert nicht –