2012-02-09 8 views
0

ASP.NET MVC2で単純なドロップダウンリストを試しましたが、tryupdatemodelから以下のエラーが表示されました。MVC2ドロップダウンリストの変換エラーを修正するには

これを修正する方法は、すべてが正しいように見えますか?

ビュー:

<%= 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 

答えて

1

問題はあなたのhtmlの入力がPost24DeliveryPlaces命名されていることであり、一つの文字列をバインドしようとしていますそれに。

ポストデータは次のように探しています:

POST 
{ 
    Post24DeliveryPlaces = (string) 
} 

はしかし、あなたのモデルでは、Post24DeliveryPlacesはIEnumerableをされ、それはSelectListItemに文字列に変換することはできません。

Html.DropDownListは、最初のパラメータとしてフィールド名をとります。これに変更して、2番目のパラメータとして配送場所のリストを与えてください。

Html.DropDownList("DeliveryPlace", Model.Post24DeliveryPlaces) 

これは、HTML

<select name="DeliveryPlace"> 
    <option value="..">....</option> 
    .... 
</select> 
を生成します。
関連する問題