我有一个具有此属性的模型
public List<System.Web.Mvc.SelectListItem> ResponseTypes { get; set; }
在我看来,我的观点会导致错误
错误CS1928:'System.Web.Mvc.HtmlHelper'不包含'DropDownList'的定义和最佳扩展方法重载'System.Web.Mvc.Html.SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper) ,字符串
@Html.DropDownList("ResponseTypeId", "--Select Response Type--", question.ResponseTypes, new { @class = "form-control responseType", @id = "cbxType" })
我正在尝试使用此重载
public IHtmlString DropDownList(string name, string defaultOption, IEnumerable<SelectListItem> selectList, IDictionary<string, object> htmlAttributes);
我似乎无法弄清楚这段代码有什么问题。我相信我已经正确地遵循了过载。
我也尝试过它。我仍然无法工作。
@Html.DropDownList("ResponseTypeId", "--Select Response Type--", (IEnumerable<SelectListItem>)question.ResponseTypes, new { @class = "form-control responseType", @id = "cbxType" })
答案 0 :(得分:2)
您使用System.Web.WebPages.Html
命名空间中的方法,而不是System.Web.Mvc
命名空间。
您需要使用的是this overload签名为
的地方public static MvcHtmlString DropDownList(
this HtmlHelper htmlHelper,
string name,
IEnumerable<SelectListItem> selectList,
string optionLabel,
object htmlAttributes
)
所以视图中的代码将是
@Html.DropDownList("ResponseTypeId", question.ResponseTypes, "--Select Response Type--", new { @class = "form-control responseType", id = "cbxType" })
但我建议您使用强类型
@Html.DropDownListFor(m => m.ResponseTypeId, question.ResponseTypes, "--Select Response Type--", new { @class = "form-control responseType", id = "cbxType" })