DropDownListFor генерирует «Имя« модель »не существует в текущем контексте» ошибка - PullRequest
2 голосов
/ 10 апреля 2011

Просто начинайте использовать MVC3 и сталкивайтесь с проблемой, пытаясь создать раскрывающийся список в представлении. Модель представления заполняется списком элементов SelectList:

mdm.CaptionSetList=new SelectList(CaptionSet.Fetch(), "CaptionSetId", "Description")

, который затем используется в представлении:

@Html.DropDownListFor(model => model.Entity.CaptionSetId, model.CaptionSetList) 

но когда страница нажата, строка подсвечивается сообщением компилятора:

Сообщение об ошибке компилятора: CS0103: имя «модель» не существует в текущем контексте

Какую ошибку новичка я совершаю?

Ответы [ 2 ]

5 голосов
/ 10 апреля 2011

Первый аргумент для DropDownListFor - это функция, так что часть верна, но вторая часть просто ожидает SelectList, поэтому все, что вам нужно сделать, это

@Html.DropDownListFor(model => model.Entity.CaptionSetId, Model.CaptionSetList) 

Обратите внимание на заглавные буквы.

Дополнительные разъяснения

В строго типизированном представлении Model - это свойство, которое относится к модели, связанной с представлением. Поскольку второй аргумент просто ожидает список, и вы указали, что у модели есть свойство CaptionSetList, вы указываете список как Model.CaptionSetList. Если бы вы поместили список в ViewBag, вы бы поставили ViewBag.CaptionSetList.

Сравните это с первым аргументом, который является функцией, которая принимает один аргумент того же типа, что и модель.

0 голосов
/ 03 июня 2019

Получена та же ошибка.

В моем случае я провел поиск и замену и забыл изменить лямбда-выражение:

@Html.DropDownListFor(m => model.StagingDelegate.ManagerId, new[]{
             new SelectListItem() {Text = "ManagerId 1", Value = "1"},
             new SelectListItem() {Text= "ManagerId 2", Value= "2"},
             }, "Choose a Manager", new { @class = "form-control form-control-sm " })

Заменить m => на модель =>:

@Html.DropDownListFor(model => model.StagingDelegate.ManagerId, new[]{
             new SelectListItem() {Text = "ManagerId 1", Value = "1"},
             new SelectListItem() {Text= "ManagerId 2", Value= "2"},
             }, "Choose a Manager", new { @class = "form-control form-control-sm " })
...