これは、Asp.Net MVC 2 でスタイルの作成アクションを使用してエンティティを作成しようとすると発生します。
POCO には次のプロパティがあります。
public int Id {get;set;}
[Required]
public string Message {get; set}
エンティティの作成時に Id が自動的に設定されるため、Create アクションでは必要ありません。
ModelState は「Id フィールドが必要です」と言っていますが、そのように設定していません。ここで自動的に何かが起こっていますか?
編集 - 明らかにされた理由
この問題の理由については、Brad Wilson が Paul Speranza 経由で回答しています。
ID の値を提供していますが、自分が存在していることを知りませんでした。これはデフォルト ルート ("{controller}/{action}/{id}") のルート データにあり、そのデフォルト値は空の文字列であり、int には無効です。ID を除外するには、アクション パラメーターで [Bind] 属性を使用します。私のデフォルトのルートは次のとおりです: new { controller = "Customer", action = "Edit", id = " " } // パラメータのデフォルト
編集 - モデルの更新テクニック
TryUpdateModel とそれに関連付けられた除外パラメーター配列を使用して、実際にこれを行う方法を変更しました。
[HttpPost]
public ActionResult Add(Venue collection)
{
Venue venue = new Venue();
if (TryUpdateModel(venue, null, null, new[] { "Id" }))
{
_service.Add(venue);
return RedirectToAction("Index", "Manage");
}
return View(collection);
}