Проблема с получением DropDownListFor для работы над EditorFor в MVC3 - PullRequest
9 голосов
/ 12 июня 2011

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

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

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

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

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

1 Ответ

13 голосов
/ 12 июня 2011

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

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

Второй параметр вспомогательного параметра DropDownListFor должен быть SelectList.Итак:

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