我需要使用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 " })
它有效,但没有默认值,这不是我想要的。
我做错了什么?
答案 0 :(得分:2)
您会在Overload List中注意到string, string, object
没有超载。
您可能正在寻找的超载是:
DropDownList(HtmlHelper, String, IEnumerable<SelectListItem>, Object)
您可以在视图中将其写为:
@Html.DropDownList("SomeString", MyEnumerable, new {@class = "required"}
您的第二个示例有效的原因,即string, null, object
是因为IEnumerable<T>
可以为空。
<强>更新强>
您可能会发现DropDownListFor
更符合您的需求。
您可能想要的确切超载是:
HtmlHelper<TModel>, Expression<Func<TModel, TProperty>>, IEnumerable<SelectListItem>, Object
表示赞成:
@Html.DropDownListFor(m => m.category_id, ViewBag.category_id, new {@class = "required"})