В вашей попытке сделать это, вы сделали некоторые основные ошибки. Сначала попробуйте понять, что происходит за сценой в MVC и что означают эти ключевые слова.
вы определили
@model IEnumerable<MvcApplication1.customer>
то есть следующий код
@Html.DropDownListFor(m=>m.name, new SelectList(Model,"id","name"));
здесь, ваш m
обозначает @model, который вы инициализируется как IEnumerable<MvcApplication1.customer>
. Вы пытаетесь получить доступ к свойству с именем name в IEnumerable (m => m.name
), а IEnumerable
не имеет такого свойства. если вы хотите каким-то образом получить доступ к своей модели, то ваш @model
должен быть объектом Customer. Тогда вы можете получить к нему доступ, как @Html.DropDownListFor(m=>m.name, new SelectList(Model,"id","name"));
в комментарии, вы сказали, что этот код @Html.DropDownList("name", new SelectList(Model, "id", "name"));
отлично работает. Да, это работает, потому что вы создаете новый элемент выбора html с идентификатором "name"
и перечисляете все, что находится в Model
, в качестве опций.
Хорошо, достаточно информация.
Это решение, которое я предлагаю для вашей проблемы.
В вашем управлении контроллером реализуйте поток кода следующим образом.
var dropdownDataList = //select your data from the database or any place as a list;
var dropdownOptions = dropdownDataList.Select(d => new {
id = d.valueforid,
name = d.valueforname
});
ViewBag.DropdownListOptions = new SelectList(dropdownOptions, "id", "name");
return View();
сейчас, на ваш взгляд, сделайте следующее.
@{
Layout = null;
}
@model MvcApplication1.customer
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@Html.DropDownListFor(m=>m.name, (SelectList)ViewBag.DropdownListOptions)
</div>
</body>
</html>
попытайтесь просмотреть эти статьи в MSDN. http://msdn.microsoft.com/en-us/library/gg416514(v=vs.108).aspx
надеюсь, что это поможет.
Cheers, Амила
_ «это не сработало» _ - объясните пожалуйста. – CodeCaster
Я получаю это сообщение об ошибке: CS1061: «System.Collections.Generic.IEnumerable» не содержит определения для «name» и никакого метода расширения «name», принимающего первый аргумент типа «System.Collections» .Generic.IEnumerable 'может быть найден (вам не хватает директивы using или ссылки на сборку?) –
Ваша модель 'IEnumerable' или список клиентов, но с '@Html. DropDownListFor (m => m.name) 'вы пытаетесь получить доступ к одному экземпляру' customer'. –
CodeCaster