EF 6 データベースの最初のアプローチを使用して MVC 5 アプリを開発しています。多くのモデルのフィールドに必要な特定の検証があります。それらを検証するためにリモート検証を使用しています。多くのモデルで使用されていたので、一般的な方法を使用しようとしています。
さらに言えば、モデルで使用されているすべてのプロパティを含む IEntity という名前のインターフェイスを作成しました。次に、検証メソッドに対して次のことを行いました。
[HttpPost]
public JsonResult UniqueCheck<T>(T code) where T : class, IEntity
{
MyEntities db = new MyEntities();
if (db.Set<T>().Any(x=>x.S1 == code.S1))
{
return Json("Already Exists!");
}
else
{
return Json(true);
}
}
以下は、モデルのプロパティの検証を呼び出す方法です。
[Remote("UniqueCheck", "Rules", HttpMethod = "POST")]
public string S1 { get; set; }
しかし、問題は、検証が機能していないことです。ブラウザー コンソールで確認したところ、検証が実際にメソッドに行われていることがわかりましたが、500 (Internal Server Error) が返されました。
ジェネリックを削除してモデル名をハードコーディングすると、問題なく動作するため、メソッド名で記述されたTに問題があることを私は知っています。
私は MVC のリモート検証のみを使用したいのですが、この一般的なメソッドを機能させたいと思っています。そうしないと、多くの場所でコピー/貼り付けが必要になるからです。