Ich habe ein älteres Projekt (MVC 5.2.2) entstaubt und festgestellt, dass eine meiner DropDownListFor() Verwendungen nicht korrekt funktioniert Wenn die Seite zum ersten Mal als Antwort auf HttpGet Anforderung gerendert wird: generierter HTML-Code enthält kein ausgewähltes Attribut überhaupt.DropDownListFor() wählt nicht erforderliches Element bei Abrufanforderung (bei Postanforderung funktioniert)
Wenn ich Ansicht Modell heißt Select Artikel (in der Steuerung und int die gerenderte Ansicht) inspizieren, das gewünschte Element hat Mitglied Satz auf true ausgewählt. Artikel Id ist enum Wert.
Wenn die gleiche Seite als Antwort auf HttpPost Anfrage gerendert wird, funktioniert alles OK. Das Schlimmste ist, wenn das Modell die Kontrolle, die Werte sind die gleichen wie auf HttpGet Anfrage und SelectLists sind in beiden Fällen die gleiche Routine ...
erstelltStatt mit Enum als ausgewählte Element Id I versuchte eine Instanz des vollständigen Artikels für ausgewählte wie in der answer here mit dem gleichen Ergebnis: funktioniert nicht auf HttpGet.
Die Liste ist auf diese Weise aufgebaut:
List<CashType> types;
if (AIncludeAll)
types = ADbContext.CashTypes.OrderBy(c => c.Ident).ToList();
else
types = ADbContext.CashTypes.Where(c => c.Id != CashTypeValues.All).OrderBy(c => c.Ident).ToList();
//
foreach (var type in types)
type.Translation = CashTypeValueToDescription(type.Id);
return new SelectList(types, "Id", "Translation", ACashType);
CashType kommt von DB-Modell:
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
public CashTypeValues Id { get; set; }
[Required]
[StringLength(DBDomains.D_IDENTCODE)]
[Index(IsUnique = true)]
public string Ident { get; set; }
[NotMapped]
public string Translation { get; set; }
Ansicht Modell
[Display(Name = "View_Unit_CashType", ResourceType = typeof(WebGui))]
public CashTypeValues CashType { get; set; }
public SelectList CashTypes { get; set; }
ist schließlich, den Einsatz in Razor wie folgt aussieht:
<div class="Theme-Bottom-Filter-Field">
@Html.LabelFor(m => m.CashType)
@Html.DropDownListFor(m => m.CashType, Model.CashTypes, new { Id = "CashTypeSelector" })
</div>
Hat jemand eine Idee, was ich vermisse?
Thanx, pf
in meiner Erfahrung in der Liste ausgewählt wird ignoriert. Stellen Sie sicher, dass der Wert von CashType dem entspricht, was Sie auswählen möchten –
Der CashType-Wert ist gleich mit item.Id, das ich auswählen möchte. – pf1957