Помощник @Html.EditorFor()
, используемый для генерации <input>
элементов, а не <select>
. Вы должны использовать свойство с типом IEnumerable<SelectListItem>
в модели представления:
public class ViewModel
{
public string location { get; set; }
public List<SelectListItem> Locations { get; set; }
}
И назначьте его внутри метода действия контроллера следующим образом:
var model = new ViewModel();
var selectLocation = new List<SelectListItem>()
{
new SelectListItem {Text = "State", Value = "State"},
new SelectListItem {Text = "International", Value = "International"},
new SelectListItem {Text = "test2", Value = "test2"},
};
model.Locations = selectLocation;
// return the view with existing viewmodel
return View(model);
Затем используйте помощник @Html.DropDownListFor()
для генерации элемента <select>
со списком опций:
@Html.DropDownListFor(model => model.location, Model.Locations, ...)
Примечание:
1) Если вы уже создали List<SelectListItem>
объект, нет необходимости преобразовывать его в SelectList
объект, поскольку SelectList
также имеет тип IEnumerable<SelectListItem>
для списка параметров.
2) В качестве альтернативы вы можете использовать ViewBag
для передачи объекта List<SelectListItem>
, но описанный выше подход в основном используется для строго типизированного списка параметров.