Hier ist der relevante Code. Wohlgemerkt, ich habe dies in Notepad ++ getan, anstatt meinen Code für mein Projekt bei der Arbeit zu kopieren. Wenn ich einen Klassennamen falsch geschrieben habe, gehe davon aus, dass es in meinem Code nicht falsch geschrieben ist. Keine KompilierungsfehlerRichtiger Weg DropDownListFor mit einer Liste primitiver Typen zu verwenden?
Modell:
public class MyViewModel
{
public int SelectedSomething { get; set; }
public IList<int> Somethings { get; set; }
}
Controller:
public class MyController
{
public ActionResult Index()
{
var viewModel = new MyViewModel();
viewModel.Somethings = Enumerable.Range(1, 12).ToList();
return View(viewModel);
}
}
Ansicht (Razor):
@Html.DropDownListFor(x => x.SelectedSomething, new SelectList(Model.Somethings, Model.SelectedSomething), "Select an Option")
Dies wird "Arbeit", aber keine Werte fest auf einem der gerendert option
Elemente in der select
:
<select>
<option value="">Select an Option</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
Ich kenne die SelectList
constructor, die die value
und text
in den option
Elementen zu machen, zu verwenden, in den Eigenschaftsnamen nehmen, aber es nützt nichts, (dass ich sehen kann), wenn eine Sammlung primitiver mit Typ wie ein int
.
Frage:
Ich weiß, ich kann IList<int>
zu IList<SelectListItem>
, meiner Meinung nach Modell ändern und SelectListItem
Objekte erstellen, um jeden int
darstellen, aber das scheint ein bisschen lächerlich (wie ich der Konstruktor sollte nicht denken, die Werte leer lassen und sollte standardmäßig den Text verwenden). Fehle ich etwas Offensichtliches hier, oder werde ich mich hier von primitiven Typen entfernen müssen?
Ich mag es. Werde es morgen bei der Arbeit benutzen! Code sieht echt aus, als Antwort, danke !! – Gromer