データベースから生成されたエンティティを使用する ASP.NET MVC3 アプリケーションがあります。各エンティティには、 MetadataType属性を使用して各エンティティを多数の検証属性で装飾されたクラスに関連付ける個別の部分クラスもあります (以下を参照)。
[MetadataType(typeof(Drawing.Metadata))]
public partial class Drawing
{
private sealed class Metadata
{
[Required]
[StringLength(50, MinimumLength = 3, ErrorMessage = "Drawing numbers must be between {2} and {1} characters in length.")]
[DisplayName("Drawing number")]
public string Number { get; set; }
[Required]
[StringLength(255, MinimumLength = 3, ErrorMessage = "Drawing titles must be between {2} and {1} characters in length.")]
public string Title { get; set; }
}
}
私のコントローラーコードは次のようになります。
[HttpPost]
public ActionResult Create(Drawing drawing)
{
if (ModelState.IsValid)
{
// Save to database here...
return RedirectToAction("Index");
}
else
{
return View(drawing);
}
}
Visual Studio テンプレートを使用してビューを作成し、エンティティを追加、編集、および削除しました (デザイナー コードは変更されていません)。
私が抱えている問題は、エンティティを作成するときに、クライアント側の検証が有効になっている場合にのみ検証が機能することです。クライアント側の検証をオフにすると、ModelState.IsValidは常に true を返し、インデックス ページに戻ります。
サーバー側の検証を Entity Framework エンティティと連携させる方法について、誰か提案を提供できますか?
アップデート:
この質問は私のものと似ているようです。この投稿の著者は問題を解決したようですが、問題をどのように修正したかについて言及するのは役に立たないほど省略されています...