it-swarm.com.de

Es gibt kein ViewData-Element vom Typ 'IEnumerable <SelectListItem>', das das Schlüsselland enthält

in verbindung dropdown in mvc ich bekomme immer diese fehler 

Aussicht

@Html.DropDownList("country",
    (IEnumerable<SelectListItem>)ViewBag.countrydrop,"Select country")

Controller

List<Companyregister> coun = new List<Companyregister>();
coun = ds.getcountry();

List<SelectListItem> item8 = new List<SelectListItem>();
foreach( var c in coun )
{
    item8.Add(new SelectListItem
    {
        Text = c.country,
        Value = c.countryid.ToString()
    });
}

ViewBag.countrydrop = item8;
return View();

ich weiß nicht, wo ich falsch liege. Kann mir jemand helfen, danke im Voraus

16
dazzling kumar

Ändern Sie in Ihrer Aktion ViewBag.countrydrop = item8 in ViewBag.country = item8;und schreiben Sie in der Ansicht wie folgt:

@Html.DropDownList("country",
                   (IEnumerable<SelectListItem>)ViewBag.country,
                   "Select country")

Eigentlich wenn du schreibst 

@ Html.DropDownList ("country", (IEnumerable) ViewBag.country, "Select country") 

oder

Html.DropDownList ("Land", "Land auswählen")

es sucht IEnumerable<SelectListItem> in ViewBag mit dem Schlüssel country. Sie können diese Überladung auch in diesem Fall verwenden:

@Html.DropDownList("country","Select country") // it will look for ViewBag.country and populates dropdown

Siehe Working DEMO-Beispiel

16
Ehsan Sajjad

Wenn Sie DropDownListFor so verwenden:

@Html.DropDownListFor(m => m.SelectedItemId, Model.MySelectList)

wenn MySelectList im Modell eine Eigenschaft des Typs SelectList war, konnte dieser Fehler ausgelöst werden, wenn die Eigenschaft null war.

Vermeiden Sie dies durch einfaches Initialisieren im Konstruktor:

public MyModel()
{
    MySelectList = new SelectList(new List<string>()); // empty list of anything...
}

Ich weiß, dass es nicht der Fall des OP ist, aber dies könnte jemandem wie mir helfen, der den gleichen Fehler hatte.

11
Alisson

Beachten Sie, dass eine Auswahlliste als NULL gepostet wird. Ihr Fehler beschwert sich daher, dass die viewdata -Eigenschaft nicht gefunden werden kann.

Initialisieren Sie Ihre Auswahlliste immer innerhalb einer POST - Aktion neu. 

Zur weiteren Erklärung: Persist SelectList in post-model

2
StackExchanger

benutze das 

 var list = new SelectList(countryList, "Id", "Name");
 ViewBag.countries=list;
 @Html.DropDownList("countries",ViewBag.Roles as SelectList)
1
M.Azad

ihr Code ist korrekt, da er in manchen Fällen nicht funktioniert. Ich weiß auch nicht, wo der Fehler herkommt. Dies kann Ihnen jedoch helfen, das Problem zu lösen. Verschieben Sie den Code wie folgt in den Kopf der Ansicht:

index.cshtml:

@using expert.Models;
@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
    Manager db = new Manager();
    ViewBag.FORM_PRESTATION = new SelectList(db.T_BDE_PRESTATION_PRES.OrderBy(p => p.PRES_INTITULE).Where(p => p.T_B_PRES_ID == null), "PRES_ID", "PRES_INTITULE");

}


<div class="form-group">                    
<label class = "w3-blue" style ="text-shadow:1px 1px 0 #444">Domaine:</label>
  <div class="col-md-10">
 @Html.DropDownList("FORM_PRESTATION", null, htmlAttributes: new { @class = "w3-select ", @required = "true" })
</div>
</div>
0
karim-225

In meinem Fall trat der Fehler auf, weil ich die Auswahlliste im Controller nicht wie folgt initialisiert hatte:

viewModel.MySelectList = new List<System.Web.Mvc.SelectListItem>();

Da mir keine der vorhandenen Antworten klar wurde, poste ich dies. Vielleicht hilft es jedem.

0

versuche dies 

@Html.DropDownList("ddlcountry",(List<SelectListItem>)ViewBag.countrydrop,"Select country")

Im Controller

ViewBag.countrydrop = ds.getcountry().Select(x => new SelectListItem { Text = x.country, Value = x.countryid.ToString() }).ToList();
0
Manish Sharma

Versuche dies.

Regler:

List<CountryModel> countryList = db.countryTable.ToList();
ViewBag.Country = new SelectList(countryList, "Country", "CountryName");
0
Bhavi

Ich hatte das gleiche Problem und fand die Lösung, dass ich den Code zum Abrufen der Dropdown-Liste aus der Datenbank in der Edit-Methode einfügen sollte. Es hat für mich funktioniert . Lösung für das ähnliche Problem

0
Barakat