В Перечне вы заметите, что для 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"})