私のASP.NET MVC 4アプリケーションには、国ドロップダウンメニューのある連絡先フォームがあります。そのメニューには、Html.DropDownListFor ヘルパー メソッドを使用します。しかし、国が選択されていない場合、「キー 'Country.Name' を持つタイプ 'IEnumerable' の ViewData アイテムはありません」という例外が発生します。これは私のコントローラーです:
ContactViewModel contactViewModel = new ContactViewModel();
contactViewModel.Countries = DbUnitOfWork.CountriesRepository.GetAll()
.Select(c => c.Name)
.AsEnumerable()
.Select(c => new SelectListItem
{
Value = c.ToString(),
Text = c.ToString()
});
これはビューにあります:
@Html.DropDownListFor(m => m.Country.Name,
Model.Countries,
Resources.SelectCountry,
dropdown)
ご覧のとおり、ViewData は使用していません。この例外を防ぐ方法は? モデル属性に [必須] がありますが、エラー メッセージが表示されません。
アップデート
これは、私のビュー モデルの国のフィールドです。
public IEnumerable<SelectListItem> Countries { get; set; }
[Required(ErrorMessageResourceType = typeof(Resource), ErrorMessageResourceName = "CountryErrorMessage")]
[Display(ResourceType = typeof(Resource), Name = "Country")]
public CountryModel Country { get; set; }
そして、これはビューにあります
@model MyApp.ViewModels.ContactViewModel