2

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 のリモート検証のみを使用したいのですが、この一般的なメソッドを機能させたいと思っています。そうしないと、多くの場所でコピー/貼り付けが必要になるからです。

4

0 に答える 0