Заполнение ASP.NET MVC DropDownList
Хорошо, я много раз работал в Google, пробовал все и не мог заставить работать. Я изучаю MVC, используя Sharp Architecture, и создал несколько базовых форм для создания объектов Client. Я хочу заполнить раскрывающийся список состояний списком штатов США и позволить пользователю выбрать из этого списка. Я могу заполнить список и вернуть его обратно (чтобы сохранить клиента), но когда я перехожу к редактированию клиента, текущее состояние клиента не выбрано. Я установил выбранное значение в 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>
Это не кажется достаточно хорошим. Что мне не хватает?
Ответы
Ответ 1
<%= Html.DropDownListFor(c => c.Client.StateProvince.Id,
new SelectList(Model.StateProvinces,
"id",
"Name",
Model.Client.StateProvince),
"-- Select State --")%>
Это делает.
Надеюсь, это поможет кому-то еще.
~ Ли
Ответ 2
Работала отлично для меня, чем! Я использовал его для установки родительского отношения в подкатегории:
<%= Html.DropDownListFor(
model => model.Category.ParentId,
new SelectList(Model.Categories,
"CategoryId",
"Name",
Model.Categories.Where(x => x.CategoryId == Model.Category.ParentId).Single()))%>
Джероен
Ответ 3
Я сделал это так. Хорошо работает.
контроллер
IFarmModelInterface service2 = new FarmModelRepository();
ViewData["Farms"] = new SelectList(service2.GetFarmNames(), "id", "FarmName", "XenApp");
Вид
<%: Html.DropDownListFor(m => m.Farm, (ViewData["Farms"] as SelectList)) %>
Ответ 4
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();
}
В AllUsers.cshtml
<p>@Html.DropDownList("ListItems")</p>
Ответ 5
<%= Html.DropDownListFor(c => c.Client.StateProvince, new SelectList(Model.StateProvinces, "Id", "Name")) %>
и переопределить ToString() для StateProvince, чтобы вернуть Id, т.е.:
return Id.ToString();
Это работает, но не является идеальным решением...
Dennis
Ответ 6
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(); }
Заполнить раскрывающийся список
@Html.DropDownList("SelectedEmployee", new SelectList((IEnumerable) ViewData["tempEmpList"], "Id", "Name"))
Ответ 7
Это View - MVC-контроллер
@Html.DropDownListFor(m => m.Entity, new ABC.Models.DropDownPopulate().MyMethod, new { @class = "form-control input-inline input-medium" })
MyMethod Получить привязку списка данных с раскрывающимся списком с помощью 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 в Dropdown_Bl - используется для получения данных в виде списка из базы данных
public List<My_Table> GetAll()
{
var Items = _Context.MyRepository.GetMany(q => q.Area == "ASD").ToList();
return Items ;
}