web-dev-qa-db-fra.com

Remplissage ASP.NET MVC DropDownList

OK, je google depuis des heures et j'essaye de tout et je ne peux rien faire travailler. J'apprends MVC en utilisant Sharp Architecture et j'ai généré des formulaires de base pour créer des objets Client. Je veux remplir la liste déroulante des états avec une liste des États américains et laisser l'utilisateur choisir parmi cette liste. Je peux remplir la liste et récupérer la valeur (pour enregistrer le client) mais quand je vais éditer le client, l'état actuel du client n'est pas sélectionné. J'ai défini la valeur sélectionnée dans la SelectList:

<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>

Cela ne semble pas suffisant. Qu'est-ce que je rate?

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

Cela suffit.

J'espère que ceci aide quelqu'un d'autre.

~ Lee

78
leebrandt

A parfaitement fonctionné pour moi merci! Je l'ai utilisé pour définir une relation parent sur une sous-catégorie:

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

Jeroen

7
user241243

Je l'ai fait de cette façon. Fonctionne bien.

Manette

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

Vue

<%: Html.DropDownListFor(m => m.Farm, (ViewData["Farms"] as SelectList)) %>
4
bcahill
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();
}

Dans AllUsers.cshtml

<p>@Html.DropDownList("ListItems")</p>
3
Jasvir Singh
<%= Html.DropDownListFor(c => c.Client.StateProvince, new SelectList(Model.StateProvinces, "Id", "Name")) %> 

et redéfinissez ToString () pour que StateProvince retourne l'ID, c'est-à-dire:

return Id.ToString();

Cela fonctionne mais n'est pas une solution parfaite ...

Dennis

2
Dennis Shtemberg

Ceci est la vue - Contrôleur MVC

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

MyMethod Récupération de la liste de données avec liste déroulante à l'aide de 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;
            }
        }

méthode GetAll dans Dropdown_Bl - Utilisé pour obtenir les données sous forme de liste à partir de la base de données

  public List<My_Table> GetAll()
        {
            var Items = _Context.MyRepository.GetMany(q => q.Area == "ASD").ToList();
            return Items ;
        }
1
Thisara Subath
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(); }

Remplir la liste déroulante

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

0
Krishan Pal