2009-08-19 10 views
44

OK, ho cercato su Google per ore e ho provato tutto e non ho potuto far funzionare nulla. Sto imparando MVC usando Sharp Architecture e ho generato alcune forme base per creare oggetti Client. Voglio compilare l'elenco a discesa degli stati con un elenco di stati degli Stati Uniti e lasciare che l'utente scelga da quella lista. Sono in grado di popolare l'elenco e recuperare il valore (per salvare il client), ma quando vado a modificare il client, lo stato corrente del client non è selezionato. Ho impostato il valore selezionato nel SelectList:Popolamento ASP.NET MVC DropDownList

<li> 
    <label for="Client_StateProvince">StateProvince:</label> 
    <div> 
     <%= Html.DropDownListFor(c=>c.Client.StateProvince, new SelectList(Model.StateProvinces, "id", "Name", Model.Client.StateProvince), "-- Select State --")%> 
    </div> 
    <%= Html.ValidationMessage("Client.StateProvince")%> 
</li> 

Questo non sembra essere abbastanza buono. Cosa mi manca?

+0

Si prega di considerare riscrivere il titolo della domanda per essere più precisi. –

+1

Quello che dovevo fare è avere una pagina di modifica in cui modifico le informazioni di un oggetto (oggetto dominio), in questo caso un oggetto Client. quando vado a modificarlo, avevo bisogno che la parte dello stato del modulo fosse un menu a discesa con un elenco di stati (materiale standard), ma dopo che lo popola quando sono in modalità di modifica, ho bisogno che esso selezioni lo stato di l'oggetto attualmente modificabile. Stavo compilando il menu a discesa, ma lo stato corrente non è stato selezionato. una volta che ho impostato il nome di DropDownList (rappresentato da lambda qui) all'Id dello stato (il valore che sto usando per il campo del valore nell'elenco a discesa) ero a posto. – leebrandt

risposta

78
<%= Html.DropDownListFor(c => c.Client.StateProvince.Id, 
           new SelectList(Model.StateProvinces, 
              "id", 
              "Name", 
              Model.Client.StateProvince), 
           "-- Select State --")%> 

Questo lo fa.

Spero che questo aiuti qualcun altro.

~ Lee

+0

Hai ragione, il primo parametro deve essere dello stesso tipo dell'ultimo. Ha funzionato anche per me! Grazie. –

7

Ha funzionato perfettamente per me grazie! L'ho usato per impostare una relazione genitore su una sottocategoria:

<%= Html.DropDownListFor(
model => model.Category.ParentId, 
new SelectList(Model.Categories, 
"CategoryId", 
"Name", 
    Model.Categories.Where(x => x.CategoryId == Model.Category.ParentId).Single()))%> 

Jeroen

2
<%= Html.DropDownListFor(c => c.Client.StateProvince, new SelectList(Model.StateProvinces, "Id", "Name")) %> 

e sovrascrivere ToString() per StateProvince per tornare Id, vale a dire:

return Id.ToString(); 

questo funziona, ma non è una soluzione perfetta ...

Dennis

+0

Questa è l'unica soluzione che mi ha aiutato! Grazie! –

4

L'ho fatto in questo modo. Funziona bene.

controller

IFarmModelInterface service2 = new FarmModelRepository(); 
ViewData["Farms"] = new SelectList(service2.GetFarmNames(), "id", "FarmName", "XenApp"); 

View

<%: Html.DropDownListFor(m => m.Farm, (ViewData["Farms"] as SelectList)) %> 
3
public ActionResult AllUsers() 
{ 
    List<Users> users = userRep.GetUsers(); 
    var listUsers = (from u in users.AsEnumerable() 
        select new SelectListItem 
        { 
         Text = u.UserName, 
         Value = u.UserId.ToString(), 
         Selected = (u.UserId==6) 
        }).AsEnumerable(); 
    ViewBag.ListItems = listUsers; 
    //ViewBag.SelectedItem = 2; 
    return View(); 
} 

In AllUsers.cshtml

<p>@Html.DropDownList("ListItems")</p> 
0
public ActionResult AllUsers() { 
    List<Users> users = userRep.GetUsers(); 
    var listUsers = (from u in users.AsEnumerable() 
        select new SelectListItem 
        { 
         Text = u.UserName, 
         Value = u.UserId.ToString(), 
         Selected = (u.UserId==6) 
        }).AsEnumerable(); 
    // ViewBag.ListItems = listUsers; 
    ViewData["tempEmpList"]=listUsers; 
    return View(); } 

Fill discesa

@Html.DropDownList("SelectedEmployee", new SelectList((IEnumerable) ViewData["tempEmpList"], "Id", "Name"))

0

Questo è vista - MVC controller

@Html.DropDownListFor(m => m.Entity, new ABC.Models.DropDownPopulate().MyMethod, new { @class = "form-control input-inline input-medium" }) 

MyMethod ottenere l'elenco dei dati si legano con discesa Uso SelectListItems

public List<SelectListItem> MyMethod 
     { 
      get 
      { 
       List<SelectListItem> dropdownList = new List<SelectListItem>(); 
       var items = new DropDown_Bl().GetAll(); 
       foreach (var item in items) 
       { 
        SelectListItem dropdownItem = new SelectListItem(); 
        dropdownItem.Value = item.RnID.ToString(); 
        dropdownItem.Text = item.Description; 
        dropdownList.Add(dropdownItem); 
       } 
       dropdownList.Insert(0, new SelectListItem() { Text = "Please Select", Value = "", Selected = true }); 
       return dropdownList; 
      } 
     } 

GetAll Method In Dropdown_Bl - Usato per ottenere dati come elenco dal database

public List<My_Table> GetAll() 
     { 
      var Items = _Context.MyRepository.GetMany(q => q.Area == "ASD").ToList(); 
      return Items ; 
     } 
Problemi correlati