Будет лучше, если вы создадите ViewModel для своего View:
public class SampleViewModel
{
public string DropDownListValue { get; set; }
}
, тогда в методе get вашего контроллера:
public ActionResult SomeAction()
{
var org = GetOrg(); //your org
var orgNames = GetOrgNames(); //your orgNames
// . . .
ViewBag.DropDownListValue = new SelectList(org.Select(s =>
new SampleViewModel
{
DropDownListValue = $"{s} - {orgNames[s]}"
}, "DropDownListValue", "DropDownListValue");
return View(new SampleViewModel())
}
your SomeAction
View:
@model YourAppNamespace.SampleViewModel
<h1>Hello Stranger</h1>
@using (Html.BeginForm())
{
@Html.DropDownList("DropDownListValue")
<input type="submit" value="Submit"/>
}
Обратите внимание, что:
Помощник DropDownList
, используемый для создания списка выбора HTML, требует IEnumerable<SelectListItem>
, явно или неявно.То есть вы можете явно передать IEnumerable<SelectListItem>
помощнику DropDownList
или добавить IEnumerable<SelectListItem>
к ViewBag
, используя то же имя для SelectListItem
, что и для свойства модели.
Мы использовали здесь неявную передачу, то есть мы использовали одно и то же имя для SelectListItem
и ViewBag
(то есть DropDownListValue
).
Затем, когда вы нажмете Submit
, вам нужно *Метод 1032 * для SomeAction
:
[HttpPost]
public ActionResult SomeAction(SampleViewModel model)
{
var org = GetOrg(); //your org
var orgNames = GetOrgNames(); //your orgNames
//. . . Validation etc..
ViewBag.DropDownListValue = new SelectList(org.Select(s =>
new SampleViewModel
{
DropDownListValue = $"{s} - {orgNames[s]}"
}, "DropDownListValue", "DropDownListValue", model.DropDownListValue);
var doSomething = model.DropDownListValue; //Your selected value from DropDownList
return View(model)
}
Ссылки: Пример DotNetFiddle , Использование помощника DropDownList с ASP.NET MVC