2017-03-19 1 views
0

Viele Fragen zu SO sind über mit Ajax-Daten zum Auffüllen Dropdown-Liste.So füllen Sie eine dynamisch hinzugefügte Dropdown-Liste aus einem stronglyTyped-Modell

Aber Ich habe bereits die Daten in einem stark typisierte Modell die SelectList Elemente enthält. Ich möchte damit meine Dropdown-Liste füllen - wie mache ich das?

So nachdem eine neue Zeile in eine Tabelle mit einem Dropdown Zugabe, wie Ausfüllen/binden, das neu dropDownList aus den Daten imcities Model geklont.

// List of cities in my Model, Location 
LocationModel { 
... 
IEnumerable<City> Cities } 

Geklonte Reihe: und in meiner Sicht ich geklont eine Reihe

<table id="rowtemplate"> 
<tr> 
    <td> 
     <input type="hidden" name="Records.Index" value="#" /> 
     <span class="citiesCss"> 
      //DropDownList to clone 
      <select class="form-control citiesCssId" id="Records_[#]__SelectedCityFromList" name="Records[#].SelectedCityFromList"> 
       <option value="">Default</option>     
      </select> 
    </span> 
    </td> 

    <td> ... another cell  
    </td> 
</tr> 
</table> 

Wie kann ich/binden, um die neu geklont Drop-Down- aus den CityList model Werten füllen?

+0

Wenn die Daten in Ihrem Modell ist, warum sind Sie nicht nur die Optionen in der Auswahl erstellen, wenn es zum ersten Mal generiert wird, so dass das Klonen auch die Optionen kopiert? –

+0

@StephenMuecke Entschuldigung, ich folge nicht, Wie kann ich auf das Modell zugreifen, um seine Werte zu klonen? Da die Dropdown-Listen * in Neue Zeile hinzufügen * hinzugefügt werden, nachdem die Ansicht vom Server gerendert wurde, ist dies auf der Client-Seite der Fall. Also, das ist * nicht * möglich '@ Html.DropDownListFor (m => M.SelectedCity, Model.City," ", new {@class =" form-control "})'. – transformer

+0

@StephenMuecke sagst du ein 'verstecktes DropDown' und dann' klonen' das – transformer

Antwort

1

Sie können die Optionen in Ihrer Vorlage basierend auf Ihrer Sammlung erstellen, wenn die Ansicht generiert wird. Unter der Annahme, City enthält Eigenschaften Id und Name, dann

<table id="rowtemplate"> 
    .... 
    <select class="form-control citiesCssId" name="Records[#].SelectedCityFromList"> 
     <option value="">Default</option> 
     @foreach(var city in Model.Cities) 
     { 
      <option value="@city.Id">@city.Name</option> 
     }    
    </select> 
    .... 
</table> 

Wenn Sie jetzt var clone = $('#rowtemplate').clone(); verwenden, um die Vorlage zu kopieren, enthält der Wert von clone auch die <option> Elemente

Verwandte Themen