在 MVC3 中使 DropDownListFor 在 EditorFor 上工作时出现问题

发布于 2024-11-15 12:59:48 字数 1178 浏览 3 评论 0原文

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

给出以下模型:

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

我很难理解这两者之间的区别。我尝试了各种解决方法来排除故障,但要么出现相同的错误,要么出现其他错误。

提前致谢。

I've got a pretty simple problem that has a solution I'm not able to find.

Given the following model:

public class InfoViewModel
{
    public SelectList States { get; set; }

    [DisplayName("State")]
    public string State { get; set; }
}

The following works fine in my view:

@Html.DropDownListFor(m => m.State, Model.States)

However, if I try to pull this into an editor template (named "SelectList"), such as:

@model System.String
@Html.DropDownListFor(m => m, ViewData["selectList"])

And then use EditorFor to build the dropdown list:

@Html.EditorFor(m => m.State, "SelectList", new { selectList = Model.States })

It fails with the following error:

'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

I'm having a hard time understanding the difference between these two. I've tried various workarounds to troubleshoot, and either get the same error, or something else.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不羁少年 2024-11-22 12:59:48

不存在这样的重载:

@Html.DropDownListFor(m => m, ViewData["selectList"])

DropDownListFor 帮助器的第二个参数必须是 SelectList。所以:

@Html.DropDownListFor(m => m, (SelectList)ViewData["selectList"])

There is no such overload:

@Html.DropDownListFor(m => m, ViewData["selectList"])

The second parameter of the DropDownListFor helper musty be a SelectList. So:

@Html.DropDownListFor(m => m, (SelectList)ViewData["selectList"])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文