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?
<%= 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
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
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)) %>
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>
<%= 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
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 ;
}
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"))