私は次の2つのエンティティを持っています:
public class Product
{
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
public virtual Category Category { get; set; }
}
public class Category
{
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
public ICollection<Product> Products { get; set; }
}
とビューモデル
public class ProductCreateOrEditViewModel
{
public Product Product { get; set; }
public IEnumerable<Category> Categories { get; set; }
}
製品の作成ビューはこのViewModelを使用します。カテゴリIDは、ビューで次のように設定されます。
<div class="editor-field">
@Html.DropDownListFor(model => model.Product.Category.ID,new SelectList
(Model.Categories,"ID","Name"))
@Html.ValidationMessageFor(model => model.Product.Category.ID)
</div>
フォームが投稿されると、製品と選択されたカテゴリオブジェクトが設定されたビューモデルのインスタンスを取得しますが、Categoryの「Name」プロパティに[Required]属性があるため、ModelStateは無効です。
製品の作成に関しては、「Name」プロパティは必要ありません。これがModelStateエラーとして報告されないように、モデルバインディングを機能させるにはどうすればよいですか?