asp.net-mvc - 无法使DropDownListFor在MVC3中的EditorFor上工作

标签 asp.net-mvc asp.net-mvc-3 razor editorfor html.dropdownlistfor

我有一个非常简单的问题,有一个我找不到的解决方案。

给定以下模型:

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/

相关文章:

c# - 使用 MVC 4 和 Entity Framework 6 访问大型数据库的最佳方法是什么

asp.net-mvc-3 - ASP.NET MVC 3 Razor View 为 Html.CheckBoxFor 返回多个值

c# - 如何将数据从多个模型传递到 View ?

c# - Umbraco 分页按钮动态类

c# - 为什么我的 MvcHtmlString 内容被转义了?

c# - ASP.NET MVC 中 Controller.ReadFromRequest 的替代品是什么?

asp.net-mvc - 在 ASP.NET MVC 测试项目中模拟静态方法

asp.net-mvc-3 - 如何使用 MVC3 和 ASP.Net 执行 302 重定向?

asp.net - Razor View - 在 Doctype 标记外发出 html

c# - 当我通过 jquery 发布时服务器验证不起作用