4

私の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
4

1 に答える 1