Невозможно добавить htmlAttribute в Html.DropDownList - PullRequest
1 голос
/ 04 июля 2011

Мне нужно использовать jQuery, чтобы выполнить некоторую проверку DropDownList. Поэтому я пытаюсь добавить htmlAttribute так:

@Html.DropDownList("category_id", "Vælg..", new { @class = "required" })

Я получаю следующие ошибки:

Error   2   'System.Web.Mvc.HtmlHelper<MvcApplication3.Models.Question>' does not contain a definition for 'DropDownList' and the best extension method overload 'System.Web.Mvc.Html.SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper, string, System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>, string)' has some invalid arguments   c:\Users\Kenan\Documents\Visual Studio 2010\Projects\MvcApplication3 - Copy\MvcApplication3\Views\AdminQuestion\GridQuestion.cshtml 38  14  MvcApplication3
Error   3   Argument 3: cannot convert from 'string' to 'System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>' c:\Users\Kenan\Documents\Visual Studio 2010\Projects\MvcApplication3 - Copy\MvcApplication3\Views\AdminQuestion\GridQuestion.cshtml 38  47  MvcApplication3
Error   4   Argument 4: cannot convert from 'AnonymousType#1' to 'string'   c:\Users\Kenan\Documents\Visual Studio 2010\Projects\MvcApplication3 - Copy\MvcApplication3\Views\AdminQuestion\GridQuestion.cshtml 38  57  MvcApplication3

Если я изменю код на:

@Html.DropDownList("category_id", null, new { @class = "required " })

Это работает, но без значения по умолчанию, а это не то, что я хочу.

Что я делаю не так?

1 Ответ

2 голосов
/ 04 июля 2011

В Перечне вы заметите, что для string, string, object.

нет перегрузки:

DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, Object)

Вы бы написали это в своем представлении как:

@Html.DropDownList("SomeString", MyEnumerable, new {@class = "required"}

Причина, по которой работает ваш второй пример, то есть string, null, object, заключается в том, что IEnumerable<T> имеет значение NULL.

ОБНОВЛЕНИЕ

Вы можете обнаружить, что DropDownListFor лучше подходит для того, что вам нужно.

Точная перегрузка, которую вы, вероятно, захотите:

HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, Object

, подразумевается как:

@Html.DropDownListFor(m => m.category_id, ViewBag.category_id, new {@class = "required"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...