Проблема с получением DropDownListFor для работы с EditorFor в MVC3

У меня есть довольно простая проблема, решение которой я не могу найти.

Учитывая следующую модель:

public class InfoViewModel
{
    public SelectList States { get; set; }

    [DisplayName("State")]
    public string State { get; set; }
}

На мой взгляд, отлично работает следующее:

@Html.DropDownListFor(m => m.State, Model.States)

Однако, если я попытаюсь вставить это в шаблон редактора (с именем «SelectList»), например:

@model System.String
@Html.DropDownListFor(m => m, ViewData["selectList"])

А затем используйте EditorFor для создания выпадающего списка:

@Html.EditorFor(m => m.State, "SelectList", new { selectList = Model.States })

Это не удается со следующей ошибкой:

'System.Web.Mvc.HtmlHelper<string>' does not contain a definition for 
'DropDownListFor' and the best extension method overload 
'System.Web.Mvc.Html.SelectExtensions.DropDownListFor<TModel,TProperty>
(System.Web.Mvc.HtmlHelper<TModel>, 
System.Linq.Expressions.Expression<System.Func<TModel,TProperty>>, 
System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>)' 
has some invalid arguments

Мне трудно понять разницу между этими двумя. Я пробовал различные обходные пути для устранения неполадок, и либо получаю ту же ошибку, либо что-то еще.

Заранее спасибо.


person Jerad Rose    schedule 12.06.2011    source источник
comment
спасибо..., ваш вопрос полезен как мой ответ///   -  person Ghanshyam Lakhani    schedule 28.05.2015


Ответы (1)


Нет такой перегрузки:

@Html.DropDownListFor(m => m, ViewData["selectList"])

Второй параметр помощника DropDownListFor должен быть SelectList. Так:

@Html.DropDownListFor(m => m, (SelectList)ViewData["selectList"])
person Darin Dimitrov    schedule 12.06.2011
comment
Спасибо, Дарин, именно так. Я должен был это понять. - person Jerad Rose; 13.06.2011