Asp.net mvc 2 选择带有MVC2和自定义ViewModel的列表

Asp.net mvc 2 选择带有MVC2和自定义ViewModel的列表,asp.net-mvc-2,viewmodel,selectlist,Asp.net Mvc 2,Viewmodel,Selectlist,我创建了一个自定义ViewModel,其中一个字段是SelectList/DropDownlist。我想使用EditorForModel来显示ViewModel。除SelectList外,所有字段都有效。我尝试了一些不同的方法,但什么都没有出现。我在一篇帖子上看到EditorForModel“不够聪明”不能做下拉列表,我想知道这是不是真的。EditorForModel更易于使用,而且输入更少:) 谢谢 更新 我想出来了。最后,我使用UIHint(“TemplateName”)在EditorTem

我创建了一个自定义ViewModel,其中一个字段是SelectList/DropDownlist。我想使用EditorForModel来显示ViewModel。除SelectList外,所有字段都有效。我尝试了一些不同的方法,但什么都没有出现。我在一篇帖子上看到EditorForModel“不够聪明”不能做下拉列表,我想知道这是不是真的。EditorForModel更易于使用,而且输入更少:)

谢谢

更新


我想出来了。最后,我使用UIHint(“TemplateName”)在EditorTemplates文件夹中创建了一个.ascx文件,该文件的输出是我所期望的。

在viewmodel中,您应该有一个
IEnumerable

public IEnumerable Months{get;set;}
在aspx中,您需要按如下方式绑定它:

<%
    var htmlAttributes = new Dictionary<string, object> { { "data-autopostback", "true" } }; 
%>

<%:Html.DropDownList("Month", Model.Months, "-- All --", htmlAttributes)%>

您需要确保在将其传递给视图之前填充Months属性


如果您需要代码来填充Months属性,请告诉我。

我想您没有领会我的意思。我想尝试使用EditorForModel(),这意味着我不必使用Html.DropDownList。这就是我想说的可能。如果在ViewModel中有IEnumerable,您将如何获取所选值?因为在表单post上,您得到一个字符串[],其中包含此属性的选定键。在控制器用于获取选定值的方法中,参数应命名为Month。我还没有测试过它的多选下拉列表。
<%
    var htmlAttributes = new Dictionary<string, object> { { "data-autopostback", "true" } }; 
%>

<%:Html.DropDownList("Month", Model.Months, "-- All --", htmlAttributes)%>