我在ASP.NET MVC2中尝试了简单的下拉列表,但是从tryupdatemodel获得了以下错误。
如何解决这个问题,看起来是否正确?
视图:
<%= Html.DropDownList("Post24DeliveryPlaces", Model.DeliveryPlace)%>
模型:
public IEnumerable<SelectListItem> Post24DeliveryPlaces { get; set; }
public string DeliveryPlace { get; set; }
结果:
System.InvalidOperationException: The parameter conversion from type 'System.String' to type 'System.Web.Mvc.SelectListItem' failed because no type converter can convert between these types.
at System.Web.Mvc.ValueProviderResult.ConvertSimpleType(CultureInfo culture, Object value, Type destinationType)
at System.Web.Mvc.ValueProviderResult.UnwrapPossibleArrayType(CultureInfo culture, Object value, Type destinationType)
at System.Web.Mvc.ValueProviderResult.ConvertTo(Type type, CultureInfo culture) at System.Web.Mvc.DefaultModelBinder.ConvertProviderResult(ModelStateDictionary modelState, String modelStateKey, ValueProviderResult valueProviderResult, Type destinationType
答案 0 :(得分:1)
问题是您的html输入被命名为Post24DeliveryPlaces并且它正在尝试将单个字符串绑定到该字符串。
Post数据看起来像这样:
POST
{
Post24DeliveryPlaces = (string)
}
但是,在您的模型中,Post24DeliveryPlaces是一个IEnumerable,它不能将字符串转换为SelectListItem。
Html.DropDownList
将字段名称作为第一个参数。尝试更改为此,将交货地点列表作为第二个参数。
Html.DropDownList("DeliveryPlace", Model.Post24DeliveryPlaces)
这将生成Html
<select name="DeliveryPlace">
<option value="..">....</option>
....
</select>