0

Ich verwende ASP.NET Core MVC RC2-Projekt mit "Database First Model". Die Datenbank ist die berühmte Northwind-Datenbank. Alles funktioniert gut, außer dass der „Select Tag Helper“ (ein HTML-Dropdown-Liste), die angeblich mit den ViewBag Daten gefüllt wird, ist leer, obwohl die ViewBag Daten nicht leer:Tag Helper Element auswählen ist leer, obwohl seine Datenquelle nicht

Die folgende Aktion Methode auf der CustomersController zeigt korrekt die Liste aller Kunden:

public IActionResult Index() 
{ 
    List<Customers> data = repository.SelectAll(); 
    return View("/views/Northwind/Index.cshtml", data); 
} 

Wenn ein Benutzer den Link „Bearbeiten“ auf einen Datensatz klickt, zeigt die folgende Edit Aktion richtig, dass Rekordwerte in Formular bearbeiten der Ausnahme, dass in der Dropdown- für Länder ist leer:

public IActionResult Edit(string id) 
{ 
    Customers data = repository.SelectByID(id); 

    var query = (from c in repository.Context.Customers 
        orderby c.Country ascending 
        select new SelectListItem() { Text = c.Country, Value = c.Country } 
       ).Distinct(); 

    List<SelectListItem> countries = query.ToList(); 
    ViewBag.Countries = countries; 
    return View("/views/Northwind/Edit.cshtml", data); 
} 

Das Folgende ist die „Ansicht“, dass die editierbaren Daten anzeigt der Ausnahme, dass in der Dropdown-leer:

@model MVCCoreCR2_Project.Models.Customers 

<div class="form-group"> 
    <label asp-for="Country" class="col-md-2 control-label"></label> 
    <div class="col-md-10"> 
    <select asp-for="Country" asp-items="@ViewBag.Countries" class="form-control" /> 
    <span asp-validation-for="Country" class="text-danger" /> 
    </div> 
</div> 

Hinweis: Während das Debuggen, wenn ich einen Break- setzen zeigen Sie an <select asp-for="Country" asp-items="@ViewBag.Countries" class="form-control" /> und schweben Sie über @ViewBag.Countries Ich kann sehen, dass die Länder in der ViewBag ausgefüllt sind.

+0

Versuchen using'@Html.DropDownListFor (Modell => model.selectedCountry, IEnumerable ) ViewBag.Countries, neue {@ Klasse = "form-control"}) sein ' –

+0

Bitte verwenden Beim nächsten Mal das richtige Tag. [tag: asp.net-mvc] ist für den Legacy ASP.NET MVC Webstack (MVC 1 bis 5). Für ASP.NET Core verwenden [Tag: asp.net-core-mvc] – Tseng

Antwort

4

Eine <select> ist kein selbstschließendes Tag. Es braucht

<select asp-for="Country" asp-items="ViewBag.Countries" class="form-control"></select> 
+0

Vielen Dank für den Hinweis auf den Fehler, den ich wahrscheinlich nicht gefangen hätte. – nam

Verwandte Themen