2016-04-20 3 views
1

Ich füge dynamisch Werte zu einem ausgewählten Elemente in meiner Ansicht Code wie so in meiner Ansicht/.cshtml:Wie kann ich den Elementindex eines Auswahlelements auf -1 setzen?

@model WebAppRptScheduler.Models.HomeModel 
@using System.Data 
@{ 
    DataTable dtUnits = Model.Units as DataTable; 
    var units = from x in dtUnits.AsEnumerable() 
    select new 
    { 
     unit = x.Field<string>("unit") 
    }; 
.....  
    <select class="form-control, dropdown" name="unitsselect"> 
     @foreach (var field in units) 
     { 
      <option id="[email protected](field.unit)" value="@field.unit">@field.unit</option> 
     } 
    </select> 
..... 

Die Werte werden bevölkern in Ordnung, aber die erste Option in dem select-Elemente wird automatisch ausgewählt wird, . Wie kann ich es auf -1 setzen, so dass nichts ausgewählt ist? Kann ich es nach der foreach-Schleife oben tun, oder muss ich es mit Javascript tun, oder kann ich es in einer C# -Code-Behind-Datei tun?

+1

Ich glaube, Sie leeren Wert in der Sammlung in Start hinzufügen müssen, damit es ausgewählt bekommen oder Sie können dies vor der Schleife tun rashfmnb

Antwort

2

So:

<select class="form-control, dropdown" name="unitsselect"> 
    <option disabled selected value> -- select an option -- </option> 
    @foreach (var field in units) 
    { 
     <option id="[email protected](field.unit)" value="@field.unit">@field.unit</option> 
    } 
</select> 

-- select an option -- Wird standardmäßig angezeigt werden. Aber wenn Sie eine Option wählen, werden Sie es nicht in der Lage wählen zurück

Quelle: default select option as blank

3

Sie könnten eine Standardoption hinzufügen außerhalb des foreach:

<select class="form-control, dropdown" name="unitsselect"> 
//_________________________^ Remove this comma 
    <option value="0" selected>Choose unit please</option> 
    @foreach (var field in units) 
    { 
     <option id="[email protected](field.unit)" value="@field.unit">@field.unit</option> 
    } 
</select> 
+0

Es funktioniert; aber das Komma wird benötigt, sonst erscheint die Auswahl unterhalb der Beschriftung, die ich links sein möchte. –

+0

Komma wird nicht benötigt. Klassenattribut ist eine durch Leerzeichen getrennte Liste von Klassennamen. Entfernen Sie einfach die Formularsteuerung, –

1

Ich glaube, Sie haben um einen leeren Wert in der Sammlung im Start hinzuzufügen, so dass es ausgewählt wird, oder Sie können dies vor der Schleife tun

2

Wenn Sie mag keine virtuellen/leeren Elemente in <select>. Sie können einzelne Zeilen Javascript in Skripten Abschnitt hinzufügen, und legen ID von < select id = „unitselect“ ... > Element

@section scripts 
{ 
    <script type="text/javascript"> 
     document.getElementById("unitselect").selectedIndex = -1; 
     ... 
+0

Danke; Ich kann das eventuell benutzen, aber für den Moment ist der Eintrag "Erinnerung" in Ordnung. –

Verwandte Themen