我有一个非常简单的问题,有一个我找不到的解决方案。
给定以下模型:
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
我很难理解这两者之间的区别。我尝试了各种变通办法来进行故障排除,或者得到相同的错误,或其他原因。
提前致谢。
最佳答案
没有这样的重载:
@Html.DropDownListFor(m => m, ViewData["selectList"])
DropDownListFor
帮助器的第二个参数musty是SelectList
。所以:@Html.DropDownListFor(m => m, (SelectList)ViewData["selectList"])
关于asp.net-mvc - 无法使DropDownListFor在MVC3中的EditorFor上工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6319635/